3 ms·
If the memory is above the size of a page, you can tell the VM to drop the page and give you a new zero filled one instead.
by astrange 2y ago
If the memory is above the size of a page, you can tell the VM to drop the page and give you a new zero filled one instead.
- josephg 2y agoFor 8kb? Syscalling in to the kernel, updating the processes’s memory map and then later faulting is probably slower by an order of magnitude or more compared to just setting those bytes to zero. Memcpy, bzero and friends are insanely fast. Practically free when those bytes are in the cpu’s cache already.
- astrange 2y agoSo don't syscall. Darwin has a system similar to io_uring for this. (But it also has a 16KB page size.)
- josephg 2y agoProbably still cause a page fault when the memory is re-accessed though. I suspect even using io_uring will still be a lot slower than bzero if you're just zeroing out 2 pages of memory. Zeroing memory is really fast.