Preventing minor page faults in real time process on linux
Asked Answered
P

2

7

I need to make the process to run in real time as much as possible.

All the communication is done via shared memory - memory mapped files - no system calls at all - it uses busy waiting on shared memory.

The process runs under real time priority and all memory is locked with mlockall(MCL_CURRENT|MCL_FUTURE) which succeeds and process has enough ulimits to have all the memory locked.

When I run it on it perf stat -p PID I still get counts of minor page faults.

I tested this with both process affinity and without.

Question:

Is it possible to eliminate them at all - even minor page faults?

Pren answered 2/12, 2012 at 15:59 Comment(0)
P
6

I solved this problem by switching from memory mapped files to POSIX shared memory shm_open + memory locking.

Pren answered 3/12, 2012 at 15:21 Comment(0)
L
0

If I understand the question correct, avoiding the minor page faults completely isn't possible. In most modern OS's including Linux, the OS doesn't load all the text and data segments into memory when the programs start. It allocates internal data structures and pages are essentially faulted in when the text and data are needed. This causing a page fault physical memory is made available to the process, swapping page from backing store. Therefore, minor page fault could be avoided without accessing backing store which might not possible.

Loci answered 3/12, 2012 at 10:7 Comment(3)
I'm talking about minor page fault which is caused by TLB missesPren
TLB miss is hardware-handled in most modern CPU. It should be invisible to OS; only slowing down some memory accesses and incrementing hardware performance monitoring counter (DTLB_LOAD_MISSES.ANY in Intel).Dayledaylight
How can I reduce the minor page fault? I do have lots of memory but still haunted by the minor page fault problem that makes the CPU usage too much to carry other jobsJeremiah

© 2022 - 2024 — McMap. All rights reserved.