[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux SCSI]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux