Em quarta-feira, 8 de março de 2017, às 13:51:49 CET, Christian Kandeler escreveu: > I use the default settings for overcommit (0/heuristic). My application > starts QProcesses in a loop. If the application has not allocated > additional memory, strace -T for clone() gives: > > <0.000079> > <0.000091> > <0.000205> > <0.000090> > <0.000119> > <0.000112> > <0.000231> > <0.000096> > <0.000114> > <0.000112> > > Here's the same application using 1GB of additional memory: > > <0.012753> > <0.016715> > <0.015152> > <0.014449> > <0.012960> > <0.016914> > <0.013560> > <0.013337> > <0.012911> > <0.013019> > > So, factors around 100?
Not unexpected, if you use 100x more memory. clone() has a fixed cost for creating the necessary book-keeping and it may have some non-O(1) dependent on the number of running processes running, but it's definitely O(n) on the memory -- the Linux kernel does not apply the book-keeping on the 2MB page table directory level, only on the actual 4 kB page table entries. That said, look at the numbers: it increased from ~100 µs to 16.9 ms in the worst case. You can't perceive that difference. > (Also, I get lots of ERESTARTNOINTR in the latter case). Ignore that, it's not visible. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
