2013/6/3 Daniel Borkmann <dborkman@xxxxxxxxxx>: > trinity currently quite often does not care about freeing memory on > its own that was fetched through malloc(). Therefore it can happen if > trinity runs for quite a long time, that oom-killer gets invoked. So > for now use the Boehm-Demers-Weiser's garbage collecting memory > allocator as a malloc replacement to avoid such situations. > > In this patch, we wrap all BDW functions into bdw_* equivalents, so that > we could later on still #ifdef something if we want to and replace all > calls based on the build. Calling bdw_free() is still legimite although > not needed, but the memory is reclaimed automatically in the background > or forced via bdw_gcollect(), which would solve trinity's memory > management. > > Dependency that we need when building (in case people don't want > additional libs, follow-up patches could still #ifdef bdw_* wrappers > to the glibc functions): > > Fedora: yum install gc-devel > > Debian: apt-get install libgc-dev > > More information on Boehm-Demers-Weiser allocator can be found here: > > http://www.hpl.hp.com/personal/Hans_Boehm/gc/ > > Note that it is said that the performance is competitive with malloc(3), > free(3) calls. Thanks, tried this a bit. Based on a quick test, the performance impact is not acceptable. Vanilla trinity: $ timeout --signal=SIGINT 60 ./trinity -q -l off -C20 [...] Ran 109049 syscalls. Successes: 20726 Failures: 88323 Patch applied: $ timeout --signal=SIGINT 60 ./trinity-gc -q -l off -C20 [...] Ran 17385 syscalls. Successes: 3073 Failures: 14312 I'm also seeing some warnings printed: Bad GET_MEM arg Bad GET_MEM arg [29301] Random reseed: 2845759031 Bad GET_MEM arg msgrcv (70) returned ENOSYS, marking as inactive. msgrcv (70) returned ENOSYS, marking as inactive. msgrcv (70) returned ENOSYS, marking as inactive. [29301] Random reseed: 382749635 GC Warning: Out of Memory! Heap size: 2 MiB. Returning NULL! GC Warning: Out of Memory! Heap size: 2 MiB. Returning NULL! GC Warning: Out of Memory! Heap size: 2 MiB. Returning NULL! GC Warning: Out of Memory! Heap size: 2 MiB. Returning NULL! GC Warning: Out of Memory! Heap size: 2 MiB. Returning NULL! GC Warning: Out of Memory! Heap size: 2 MiB. Returning NULL! GC Warning: Out of Memory! Heap size: 2 MiB. Returning NULL! GC Warning: Out of Memory! Heap size: 2 MiB. Returning NULL! GC Warning: Out of Memory! Heap size: 2 MiB. Returning NULL! GC Warning: Out of Memory! Heap size: 2 MiB. Returning NULL! Tommi -- To unsubscribe from this list: send the line "unsubscribe trinity" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html