4 ms·
The reason fork is so slow on Linux is because the default page size is 4k. This means for a 300MB process, 76800 page table entries have to be copied during th
by tmm1 16y ago
The reason fork is so slow on Linux is because the default page size is 4k. This means for a 300MB process, 76800 page table entries have to be copied during the fork.
There are ways to enable HugeTBL on linux to increase the page size, which can improve fork performance as well. See http://stackoverflow.com/questions/2731531/faster-forking-of-large-processes-on-linux/2874009#2874009 http://stackoverflow.com/questions/2731531/faster-forking-of..., http://linuxgazette.net/155/krishnakumar.html http://linuxgazette.net/155/krishnakumar.html and http://sourceforge.net/projects/libhugetlbfs/ http://sourceforge.net/projects/libhugetlbfs/
Does anyone know how fork is implemented on BSD/OSX and why it doesn't exhibit the same characteristics?
- deleted 16y ago[deleted]
- akent 16y agoBSD / OS X has native support for superpages. From version 2.6.38, Linux will get native huge page / superpage support too. http://lwn.net/Articles/423584/ http://lwn.net/Articles/423584/
- deleted 16y ago[deleted]
- Andys 16y agoIn FreeBSD, it is extent-based, so a 300MB process might actually only have a couple dozen maps - heap, stack, program binary, and whatever dynamically loaded libraries. I'd be shocked if it wasn't the same in linux.