Out of memory in SMP Parallelism

In several languages ​​(mainly D and Java / Jython), I noticed that parallel programs without an obvious synchronization bottleneck often do not scale well to 4 or more cores due to memory management bottlenecks. I know that local stream allocators fix this problem, but most garbage collector implementations still need to stop the world. Garbage collection does not confuse parallel (the general state should be updated too often), so using a parallel collector does not completely solve the problem. In the case of manual memory management, even if the allocation is mainly related to the local thread allocator, the memory still needs to be freed, possibly from another thread, in addition to the one in which it was allocated.

Is there any language / execution / malloc implementation for which the memory bottleneck for SMP parallelism is a solvable problem for all practical purposes, while preserving the multithreading of the traditional shared address space?

+3
source share
2 answers

No.

What you call a memory management bottleneck is an inherent feature, albeit not desirable, for SMP computers. Sooner or later, the processor requirements for accessing the memory will overload the memory bus, and processing slows down or, at best, stops faster, with more processors added.

, 4 , SGI Altix, 256 . 4 256 2048 ( 2048- SMP), .

0

Source: https://habr.com/ru/post/1768425/


All Articles