Search code examples
clinuxmmapmmu

How fast is mprotect


My question is how fast is mprotect. What will be the difference between mprotecting say 1 MB of contiguous memory as compared to 1 GB of contiguous memory? Of course I can measure the time, but I want to know what goes under the hood.


Solution

  • A quick check on the source seems to indicate that it iterates over the process mappings in the selected region and change their flags. If you protect less than a whole mapping it'll split it into two or three.

    So in short it's O(n) where n is the number of times you've called mmap.

    You can see all the current maps in /proc/pid/maps