URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 65593
[ Назад ]

Исходное сообщение
"Новая техника управления памятью позволяет ускорить программ..."

Отправлено opennews , 06-Апр-10 13:31 
На международном симпозиуме параллельных и распределенных вычислений будет представлена (http://news.ncsu.edu/releases/wmssolihinthreads/) новая техника (http://www.ece.ncsu.edu/arpers/Papers/MMT_IPDPS10.pdf) организации управления памятью, позволяющая добиться заметного повышения производительности стандартных приложений при их работе на многоядерных процессорах. При этом повышение производительности заметно в программах для которых в обычных условиях достаточно трудно распараллелить операции, например, в браузерах и текстовых процессорах.

Суть техники в выделении функций динамического распределения памяти в отдельный поток MMT (Memory Management Thread), работающий параллельно и не блокирующий работу основного приложения. В настоящий момент разработчиками подготовлен прототип динамической библиотеки, подменяющей стандартные функции распределения памяти (malloc, free) и не требующей модификации приложения.

Измерение производительности различных программ, в зависимости от...

URL: http://news.ncsu.edu/releases/wmssolihinthreads/
Новость: http://www.opennet.ru/opennews/art.shtml?num=26107


Содержание

Сообщения в этом обсуждении
"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Dcow , 06-Апр-10 13:31 
это будет в ядре?

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено sluge , 07-Апр-10 13:58 
ядро то тут причом?

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено aZ , 06-Апр-10 13:49 
На какой ОС? На виндовс?)

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Zenitur , 06-Апр-10 14:48 
Да на любой.

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено XoRe , 06-Апр-10 18:11 
>На какой ОС? На виндовс?)

От них дождешься =)
Там если явно самому в своей программе накодить.

А на любой нормальной ОС, где можно подсовывать разные реализации malloc, возможно все перевести на ту реализацию, которая больше нравится.


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Damon , 06-Апр-10 19:11 
> Там если явно самому в своей программе накодить.

Да, как бы не сверх проблема. На C++ (в первом приближении!), пишете обертку и перегружаете глобальный оператор new. STL, по дефолту, использует глобальный оператор, но позволяет указать одним из параметров шаблона свой аллокатор (еще один путь)...
Ну а "чисто" на C, под вындос вряд ли сейчас кто пишет, впрочем, там можно по шаманить с опциями линкера, попытаться заставить его слинковать нужную либу и использовать именно нужную ф-цию. Когда-то давно читал, что new из библиотек VS6 пользует malloc (понятия не имею, как сейчас), т.ч. данный путь может оказаться универсальным.

Ну а шарписты, видимо, в пролете...


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено XoRe , 06-Апр-10 20:44 
>> Там если явно самому в своей программе накодить.
>
>Да, как бы не сверх проблема.

Согласен.
Свой код - своя вольница.

Но я про то, что в нормальных ОС можно задавать реализацию malloc для всех программ.
Я имею в виду для всех уже скомпиленных программ.
Ну кроме статически скомпиленных)

А попробуйте такой же трюк проделать в винде.
Я так понимаю, там и статическая компиляция практикуется куда чаще.


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Damon , 06-Апр-10 21:13 
>Но я про то, что в нормальных ОС можно задавать реализацию malloc
>для всех программ.
>Я имею в виду для всех уже скомпиленных программ.
>Ну кроме статически скомпиленных)

Ну, согласно закону Мерфи -- "Если высказывание может быть не понято, непременно найдется тот, кто его не поймет!" ((С) как-то так :-), ну а я человек маленький и законопослушный... :-)
Вобщем, извиняюсь, не так понял.


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено sluge , 07-Апр-10 13:59 
new то тут причем?
вызвал я скажем strdup-где тут new? все идет от malloc и собратьев, даже new!

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Damon , 07-Апр-10 15:06 
>new то тут причем?
>вызвал я скажем strdup-где тут new?

Я же написал -- "в первом приближении", я же не предлагал, как нихрена не делая, поиметь кучу выгод, так только МММ в свое время делала, где она теперь, Вы (думаю) в курсе...
Вместо char*, пользуйте std::string, там используется new, или, вообще, свой аллокатор указать можно...

>все идет от malloc и собратьев,
>даже new!

"Анатомия C Run-Time, или Как сделать программу немного меньшего размера" ( http://www.rsdn.ru/article/cpp/crt.xml ):
"Обычно C/C++-программа опирается на мощную поддержку С Run-Time Library - библиотека времени исполнения языка C, далее - CRT; более редкое название - RTL (Run-Time Library). Многим функциям этой библиотеки для правильной работы требуется дополнительная инициализация (CRT startup code). В частности, для вывода текста на консоль с помощью функции printf необходимо, чтобы дескриптор стандартного вывода stdout был предварительно связан с устройством вывода операционной системы (например, стандартным выводом и консолью Win32). То же самое справедливо и для функций работы с кучей - таких, как malloc для C и оператора new для C++.
    ...
А сам код CRT находится в динамической библиотеке MSVCRT.DLL в системном каталоге Windows. Эта многопоточная библиотека используется и некоторыми бесплатными компиляторами C/C++ для Windows, например, MinGW."

Пишите свою dll, где делаете форвардинг всех ф-ций на оригинал, кроме malloc/free, ну и еще чего-нить, навроде realloc... При линковке линкуете со своей либой.
По мойму, не так уж и офигенно сложно...


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Konstantin , 06-Апр-10 13:55 
Интересно в PDF-е и в новости написано про прототип динамической библиотеки! Кто нибудь видел link на эту библиотеку?

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено DeDA , 06-Апр-10 14:01 
исходники в студию!

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено croster , 06-Апр-10 14:45 
Искал исходники, но пока не нашел. Есть только пара презентаций:
1. http://www4.ncsu.edu/~dtiwari2/Papers/ESPIPP_Presen_WACI_ASP...
2. http://www4.ncsu.edu/~dtiwari2/Papers/MMT_MEDEA_PRESENTATION...

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено iZEN , 06-Апр-10 14:03 
Это будет хорошо дополнять ZFS prefetch и другие техники файлового кэширования. Правда, при этом, оперативка будет загружена на 100% (однако, память на то и покупается, чтобы использоваться не на 20%, а на полную свою длину).

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено аноним , 06-Апр-10 14:53 
Да, жависты любят эту ересь нести. Только память всегда гораздо лучше пустить под дисковые кэши, чем под забитие бесполезным мусором, как в случае с java.

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Анон , 06-Апр-10 14:04 
Главное чтобы не запатентовали.

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено sergej , 06-Апр-10 14:17 
Чето я не понял за счет чего ускорение. malloc все равно будет ждать завершения выделения памяти в этом потоке

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Аноним , 06-Апр-10 14:27 
> Чето я не понял за счет чего ускорение. malloc все равно будет ждать завершения выделения памяти в этом потоке

Аналогично, какая разница в каком потоке выполняется код malloc, если ему всё равно нужно блокироваться от конкурентных запросов?


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено pavlinux , 06-Апр-10 21:07 
По сути, для начал использования памяти, достаточно получить указатель
на начало сегмента.

int A[ULONG_LONG_MAX];
int *prt;

   if ( (pid = fork()) == 0 ) {
         ptr = super_malloc(ULONG_LONG_MAX);
         exit 0;
   }
   if ( pid > 0 ) {

   memcpy(ptr, A, ULONG_LONG_MAX * sizeof (int));

   }
...

...

В общем, пока второй делает маллоку,  первый начинает её юзать.
Если ядро дробит память на страницы, то по мере доступности всего
запрашиваемого размера, можно ставить мутексы, спинлоки.
Но тогда уже memcpy должен отрабатывать ожидание в очереди на выделение.


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено PatentTroll , 06-Апр-10 14:20 
Начинаю патентовать... :)

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Аноним , 06-Апр-10 14:31 
Заголвок должен быть "Новая техника управления памятью позволяет ускорить плохо распараллеливаемые программы с интенсивным выделением и освобождением памяти на 19%. А то можно подумать, что изобрели какой-то мегаускорятель программ...

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Anton , 06-Апр-10 14:39 
Да все просто, делаете отдельный обьект , в который кидаете запросы на выделение памяти.
Выполнение происходит в отдельном потоке, вот вам и прирост. Поидее так и надо было делать изначально.

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено sergej , 06-Апр-10 14:41 
Ага. А как узнать насколько заранее нужно послать запрос на выделение памяти, что бы он успел ее выделить к тому моменту, когда она понадобится?

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено IGX , 06-Апр-10 14:43 
полный бред! поток, которому необходима память всё равно будет ожидать окончания выделения памяти другим потоком и не продолжится, пока память не будет выделена

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Anton , 06-Апр-10 14:52 
Поток с выделением будет выполнятся на другом ядре(процессоре) ,
а поток из которого был запрос на выделение будет ждать , не занимая ядро(процессор).

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено аноним , 06-Апр-10 14:56 
>Поток с выделением будет выполнятся на другом ядре(процессоре) ,
>а поток из которого был запрос на выделение будет ждать , не
>занимая ядро(процессор).

И откуда тут выигрыш по сравнению с обычным подходом?


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Anton , 06-Апр-10 15:08 
потому что запрос будет неблокирующий

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено IGX , 06-Апр-10 15:20 
Специально для особо одарённых танкистов: http://www.ece.ncsu.edu/arpers/Papers/MMT_IPDPS10.pdf

Простейший подход к многопоточному выделению/освобождению памяти приводит к замедлению выделения/освобождения памяти в несколько раз. В представленном решении приведены техники по преодолению замедляющих факторов.

Моё мнение: большинство из этих техник, а также более продвинутые техники, способны дать выигрыш гораздо больший при организации программы без многопоточности.


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено sergej , 06-Апр-10 16:11 
>> потому что запрос будет неблокирующий

в пдфке вроде говорят, что интерфейс malloc/free они не ломали. Откуда возьмется неблокирующий malloc?


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Anton , 06-Апр-10 17:21 
а вы внимательней почитайте

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено demo , 06-Апр-10 17:56 
Очевидно, что некоторое приближение к неблокирующему malloc-у можно получить только посредством preallocation и организации нескольких "маленьких куч" - по одной на поток; или если потоков много больше чем процессорных ядер - то можно организовать несколько "коммунальных" куч с диспетчеризацией malloc-ов по правилу "round robin". Получается почти-неблокирующий-malloc. Коллеги в tbsoft когда-то экспериментировали с такими аллокаторами и достигли заметных успехов.

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено аноним , 06-Апр-10 18:45 
> потому что запрос будет неблокирующий

Решение предлагается как drop-in замена обычному malloc. Вопрос - что вернет ваш "неблокирующий malloc"?


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено pavlinux , 06-Апр-10 21:23 
>> потому что запрос будет неблокирующий
>
>Решение предлагается как drop-in замена обычному malloc. Вопрос - что вернет ваш
>"неблокирующий malloc"?

указатель на начало сегмента памяти.

:)


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Аноним , 06-Апр-10 22:09 
и когда он выдалять будет и в каком порядке?

если он к моменту возвращения еще не все выделил - то мы ведь можем не с начала заюзать сегмент, а с конца или с середины.


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено pavlinux , 06-Апр-10 23:24 
>и когда он выделять будет и в каком порядке?

В пространстве пользователя это должны быть линейные адреса.
А как их сегментирует ядро это уже второй вопрос.

>
>если он к моменту возвращения еще не все выделил - то мы
>ведь можем не с начала заюзать сегмент, а с конца или
>с середины.

Живой, классический пример, - поезд рельсоукладчик, сам кладёт - сам едет,
или даже танк, сам за собой дорогу тащит. :)

В С99 сделали же динамические массивы ...

for ( i = 0; i < LIMIT; i++) {
      int A[i] = i+i;  
}





"Новая техника управления памятью позволяет ускорить программ..."
Отправлено sluge , 07-Апр-10 14:02 
в с нет ниаких сегментов памяти

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено pavlinux , 07-Апр-10 19:39 
>в с нет ниаких сегментов памяти

Ещё один...  иди всю Википедию выучи или хотя бы Ожегова, тогда возвращайся.

И причем тут язык...

---
Сегмент (от лат. segmentum — отрезок, полоса, от лат. seco — режу, рассекаю) — часть чего-либо.

* В математике
   o Сегмент, или отрезок — множество точек прямой, включающее свои концы.
   o Сегмент (геометрия) — плоская фигура, заключённая между кривой и её хордой. Как частный случай: круговой сегмент.
   o Сегмент (стереометрия) — часть тела, ограниченная плоскостью и отсекаемой ею частью поверхности. Как частный случай: шаровой сегмент.
   o Сегмент (математический анализ) — множество всех вещественных чисел, удовлетворяющих неравенствам a≤x≤b, где a<b.
   o Полусегмент — множество всех вещественных чисел x, удовлетворяющих неравенствам a≤x<b {или a<x≤b}
    * Сегмент памяти — в информатике одна из единиц адрсесации в некоторых моделях памяти.
    * Сегмент (биология) — части тела, похожие по строению и расположенные последовательно вдоль продольной оси тела.
    * Сегмент (ботаника) — часть листовой пластинки рассечённого листа.
    * Сегмент сети (в информатике) — узлы сети, подключённые к одному маршрутизирующему устройству (коммутатор, маршрутизатор) и работающие по одному физическому протоколу.
    * Сегмент рынка (в экономике)
    * Семисегментный индикатор в электронике.


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено аноним , 08-Апр-10 05:32 
И во что это выльется? Я так могу sbrk вместо маллока использовать.

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено pavlinux , 08-Апр-10 11:54 
в то, что можно начать использовать до конца не выделенную память. По аналогии с CoW

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено pazke , 06-Апр-10 14:53 
С выделением памяти действительно непонятно, но вот free() должно выноситься в отдельный тред без проблем.

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено IGX , 06-Апр-10 15:06 
Поддерживаю.

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено letsmac , 06-Апр-10 15:33 
Ну это уже, наверно, во всех сборщиках мусора реализовано.

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено DFX , 06-Апр-10 15:28 
ну пускай вот в glibc добавят, чтож...

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено IGX , 06-Апр-10 15:33 
Спорно, т.к. приведенный метод ускорения будет в каких-то случаях немного ускорять, а в каких-то очень замедлять выделение/освобождение пямяти.

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Anton , 06-Апр-10 17:49 
Нда?! И в каких он будет замедлять?

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено аноним , 06-Апр-10 18:47 
>Нда?! И в каких он будет замедлять?

Если не использовать preallocation, то во всех. А если использовать, то оно будет жрать лишнюю память. Лучше просто головой подумать, перед тем как в inner loop маллочить четыре байта.


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено IGX , 06-Апр-10 20:30 
И хорошо еще, если ядро свободное найдется на работу потока выделения/освобождения памяти. Потому как если не найдется, то, наверно:
1) память в лучшем случае будет освобождаться с задержкой, что грозит либо большим перерасходом памяти, либо выделение памяти станет нереально медленным.
2) выделение памяти во многих случаях станет оооччень медленным по многим причинам.

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено XoRe , 06-Апр-10 20:50 
>И хорошо еще, если ядро свободное найдется на работу потока выделения/освобождения памяти.
>Потому как если не найдется, то, наверно:
>1) память в лучшем случае будет освобождаться с задержкой, что грозит либо
>большим перерасходом памяти, либо выделение памяти станет нереально медленным.
>2) выделение памяти во многих случаях станет оооччень медленным по многим причинам.
>

Могу предположить, что все ядра, кроме первого, обычно загружены чуть меньше.
Исходя из той же идеи, что далеко не все программы ещё true smp =)
Ну и сам по загрузке ядер вижу такую картину.
Что на сервере, что на десктопе.

И можно сделать вывод, что такая фишка с выделением памяти будет эффективна до тех пор, пока не научатся равномерно эффективно загружать все ядра.
Т.е. она будет эффективна ещё очень долго)


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено pavlinux , 06-Апр-10 21:27 
>>И хорошо еще, если ядро свободное найдется на работу потока выделения/освобождения памяти.
>>Потому как если не найдется, то, наверно:
>>1) память в лучшем случае будет освобождаться с задержкой, что грозит либо
>>большим перерасходом памяти, либо выделение памяти станет нереально медленным.
>>2) выделение памяти во многих случаях станет оооччень медленным по многим причинам.
>>
>
>Могу предположить, что все ядра, кроме первого, обычно загружены чуть меньше.
>Исходя из той же идеи, что далеко не все программы ещё true
>smp =)

Предлагаешь замутить sleep(), wait(), delay() и т.п., c поддержкой SMP
Если процесс спит, так пущай спит на всех процах сразу?  


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено XoRe , 07-Апр-10 00:29 
>Предлагаешь замутить sleep(), wait(), delay() и т.п., c поддержкой SMP
>Если процесс спит, так пущай спит на всех процах сразу?

=)
Я просто указываю на то, что нет true smp.
Да и не думаю, что будет.
Из этого и исходит мое предположение, что ещё долгое время первое ядро будет более нагружено, чем остальные.
Особенно на десктопе.


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Dvorkin , 07-Апр-10 20:16 
вот мой десктоп (коре квад) секундное измерение:
cpu 0 usage: 0%
cpu 1 usage: 2%
cpu 2 usage: 28%
cpu 3 usage: 7%

[dv@dvpc ~]$ uname -r
2.6.31.12-server-3mnb


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено IGX , 06-Апр-10 21:42 
Хотя средняя загрузка процессора не велика, но это не означает, что на каждом участке веремени есть хотя бы одно свободное ядро. Т.е. при небольшом количестве ядер ситуация, когда в конкретный момент времени загружены все ядра велика, что означает огромный лаг (по меркам процессорного времени) при выделении и освобождении памяти, т.е. пауза до тех пор, пока планировщик потоков не даст время потоку выделения/освобождения памяти, а потом, пока планировщик потоков не даст время потоку, которому требовалась память. В Win у вас может уйти на такую операцию 15+15=30 мс (нехилый такой лаг). А если операция выделения/освобождения памяти слишком частые (что говорит лишь о кривой архитектуре программы), то лаги могут быть не только наблюдаемые визуально, но и нехило досаждающие. Не думаю, что вам будет приятно листать страницу в браузере во время упаковки каких-то данных многопоточным 7zip'ом.

Ну, а если у вас процессор свободен, то никакие ускорения malloc вам не нужны. Тем более 19% для malloc/free, о которых идет речь в данной новости, т.к. в лучшем случае в конечном счете вы получите пару процентов улучшения общей производительности, и то не факт.


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено XoRe , 07-Апр-10 00:30 
>Хотя средняя загрузка процессора не велика, но это не означает, что на
>каждом участке веремени есть хотя бы одно свободное ядро. Т.е. при
>небольшом количестве ядер ситуация, когда в конкретный момент времени загружены все
>ядра велика, что означает огромный лаг (по меркам процессорного времени) при
>выделении и освобождении памяти, т.е. пауза до тех пор, пока планировщик
>потоков не даст время потоку выделения/освобождения памяти, а потом, пока планировщик
>потоков не даст время потоку, которому требовалась память. В Win у
>вас может уйти на такую операцию 15+15=30 мс (нехилый такой лаг).

Если переход с текущей реализации на предлагаемую может вызвать такие лаги, то напрашивается вопрос - а в текущей реализации нет таких лагов?


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено IGX , 07-Апр-10 01:10 
>[оверквотинг удален]
>>каждом участке веремени есть хотя бы одно свободное ядро. Т.е. при
>>небольшом количестве ядер ситуация, когда в конкретный момент времени загружены все
>>ядра велика, что означает огромный лаг (по меркам процессорного времени) при
>>выделении и освобождении памяти, т.е. пауза до тех пор, пока планировщик
>>потоков не даст время потоку выделения/освобождения памяти, а потом, пока планировщик
>>потоков не даст время потоку, которому требовалась память. В Win у
>>вас может уйти на такую операцию 15+15=30 мс (нехилый такой лаг).
>
>Если переход с текущей реализации на предлагаемую может вызвать такие лаги, то
>напрашивается вопрос - а в текущей реализации нет таких лагов?

В текущей реализации таких лагов нет, т.к. память выделяется/освобождается в том же потоке, которому она требуется, а описанная возможная ситуация (когда поток выделения/освобождения памяти имеет наивысший приоритет в системе, и других потоков с таким приоритетом в системе нет) возникает исключительно из-за многопоточности. Сейчас ядро любой ОС учитывает ситуации одновременного обращения к нему нескольких потоков, которые требуют выделить/освободить для них память или другие объекты ядра.


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено XoRe , 07-Апр-10 11:11 
>В текущей реализации таких лагов нет, т.к. память выделяется/освобождается в том же
>потоке, которому она требуется, а описанная возможная ситуация (когда поток выделения/освобождения
>памяти имеет наивысший приоритет в системе, и других потоков с таким
>приоритетом в системе нет) возникает исключительно из-за многопоточности. Сейчас ядро любой
>ОС учитывает ситуации одновременного обращения к нему нескольких потоков, которые требуют
>выделить/освободить для них память или другие объекты ядра.

Т.е. лаги могут быть, если много программ одновременно потребуют память?
Кстати, в винде такое врядли будет реализовываться, так что на её лаги пофиг)


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено аноним , 06-Апр-10 18:49 
> Using the new technique, when a memory-management function needs to be performed, “the computational thread notifies the memory-management thread – effectively telling it to allocate data storage and to notify the computational thread of where the storage space is located,” says Devesh Tiwari, a Ph.D. student at NC State and lead author of the paper. “By the same token, when the computational thread no longer needs certain data, it informs the memory-management thread that the relevant storage space can be freed.”

Бгыгы, и что, computational thread не заблокирована на это время? Бред какой-то.


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Andrey Mitrofanov , 06-Апр-10 19:05 
>Бгыгы, и что, computational thread не заблокирована на это время? Бред какой-то. >

Это _академический опен-сорс такой. Диссертация про коня в вакууме, потом, если повезёт, закрытые тесты-реализации-бенчмарки (как щас вижу - на win* или *BSD) с ещё более громкими заголовками, потом продажа венчурным капиталистам =>профит. А ускоряет оно маллок в глибц, не ускоряет... __Так_и_не_обещал_же_никто.__


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено fresco , 06-Апр-10 20:45 
не исключено

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено аноним , 08-Апр-10 05:34 
>Это _академический опен-сорс такой. Диссертация про коня в вакууме, потом, если повезёт, закрытые тесты-реализации-бенчмарки (как щас вижу - на win* или *BSD) с ещё более громкими заголовками, потом продажа венчурным капиталистам =>профит. А ускоряет оно маллок в глибц, не ускоряет... __Так_и_не_обещал_же_никто.__

На win* или *nux. На BSD как раз самых эффективный аллокатор из существующих.


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Andrey Mitrofanov , 08-Апр-10 09:34 
>>Это _академический опен-сорс такой
>>закрытые тесты-реализации-бенчмарки (как щас вижу - на win* или *BSD)
>>__Так_и_не_обещал_же_никто.__
>На win* или *nux. На BSD как раз самых эффективный аллокатор из существующих.

Так-так!? Что зироты BSD имеют сказать за борьбу с академ-пен-сорсом и мировой иссследовательскай наукай?!


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено funky_dennis , 06-Апр-10 20:22 
http://www.google.ru/search?q=tcmalloc
чем не понравился им?

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено XoRe , 06-Апр-10 20:53 
>http://www.google.ru/search?q=tcmalloc
>чем не понравился им?

Возможно, лицензией.
А может просто, своя велосипеда ближе к телу)


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено pavlinux , 07-Апр-10 00:26 
>http://www.google.ru/search?q=tcmalloc
>чем не понравился им?

О, это такая клёвая хрень...

# svn checkout http://google-perftools.googlecode.com/svn/trunk/ google-perftools
# cd google-perftools
# ./autogen.sh
# ./configure
# make
# make check
...
...
======================================
8 of 25 tests failed
Please report to opensource@google.com
======================================
make[1]: *** [check-TESTS] Ошибка 1
make[1]: Leaving directory `/usr/src/google-perftools'
make: *** [check-am] Ошибка 2


# LD_PRELOAD=./.libs/libtcmalloc.so firefox
Ошибка сегментирования


"Новая техника управления памятью позволяет ускорить программ..."
Отправлено sluge , 07-Апр-10 14:01 
звучит заманчиво
но не поверю пока сам не попробую

"Новая техника управления памятью позволяет ускорить программ..."
Отправлено Аноним , 07-Апр-10 23:01 
Прогресс такой прогресс. Сначала напридумывают языков с динамической типизацией, сборщиками мусора, безграничными строками. Ересь. Для критических приложений есть С, каждый поток со своим стеком, стоимость выделения минимальна. Размером управляется железом. Да, может не так оптимально, но память физически жрётся приемлемо. malloc/free в хорошо спроектированной программе нужны в начале и конце обработки. Всё остальное от лукавого.