The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

12.04.2010 20:23  Менеджер распределения памяти jemalloc выпущен в виде отдельной библиотеки

Высокопроизводительный менеджер распределения памяти jemalloc выпущен в виде отдельной библиотеки для платформы Linux. Jemalloc представляет собой реализацию функций malloc, оптимизированную для решения проблем фрагментации и оптимальной утилизации ресурсов CPU при выделения памяти в нескольких потоках на многопроцессорных системах. Изначально jemalloc был разработан Джейсоном Эвансом (Jason Evans) для FreeBSD 7.0, а позднее был портирован в NetBSD и интегрирован в состав браузера Firefox 3.

Для решения проблем с блокировками на SMP системах в jemalloc для каждого процессора используется своя изолированная область распределения памяти, что позволяет добиться линейной масштабируемости при измерении числа распределений памяти в единицу времени при росте числа нитей в многопоточных приложениях, при том что в таких системах как pkhmalloc и dlmalloc производительность падает с ростом числа потоков. Использование jemalloc позволяет увеличить производительность, сократив при этом фрагментацию и в связи с этим требуя для своей работы меньше памяти. Например, переход Firefox на jemalloc привел к уменьшению потребления памяти при длительной работе в среднем на 22%.

С выходом обособленной библиотеки пользователи Linux получили возможность использовать jemalloc в своих программах не прибегая к интеграции кода jemalloc в свой проект. В представленном варианте jemalloc поддерживаются такие возможности, как локальное для нитей кеширование, профилирование кучи, интроспекция, альтернативная реализация красно-черных деревьев.

  1. Главная ссылка к новости (http://t-t-travails.blogspot.c...)
  2. OpenNews: Новая техника управления памятью позволяет ускорить программы на 19%
  3. OpenNews: Исследование потребления памяти в Firefox 3 beta 4
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: malloc, jemalloc, memory, linux
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.2, oneonfire (?), 22:18, 12/04/2010 [ответить] [показать ветку] [···]    [к модератору]
  • –1 +/
    Кстати кто пользуеться Archlinux, и эта библеотека нужна я в AUR создал пакет: http://aur.archlinux.org/packages.php?ID=36417
     
     
  • 2.9, malex984 (?), 23:29, 12/04/2010 [^] [ответить]    [к модератору]
  • +/
    senki.
     
  • 1.3, anonimus (?), 22:46, 12/04/2010 [ответить] [показать ветку] [···]    [к модератору]
  • –2 +/
    а как тут Linux и BSD лицензия стыковаться будут? o_O
     
     
  • 2.10, аноним (?), 00:15, 13/04/2010 [^] [ответить]    [к модератору]
  • +/
    Замечательно.
     
  • 1.4, oneonfire (?), 22:48, 12/04/2010 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    ну а стоит посмотреть на разные библеотеки, во многих BSD лицензия и ничего ведь...
     
     
  • 2.5, anonimus (?), 22:50, 12/04/2010 [^] [ответить]    [к модератору]  
  • +/
    так если софтину под Linux будут собирать с jemalloc - то результат (сама софтина) под какой лицензией должен выпускаться?
     
     
  • 3.6, Аноним (-), 22:57, 12/04/2010 [^] [ответить]    [к модератору]  
  • +1 +/
    Под той, под которой удобно автору софтины.
     
     
  • 4.7, anonimus (?), 23:11, 12/04/2010 [^] [ответить]    [к модератору]  
  • +/
    >Под той, под которой удобно автору софтины.

    Так вроде бы если дополнять и изменять GPL-ый софт, то лицензию нельзя менять...?

     
     
  • 5.8, Аноним (-), 23:19, 12/04/2010 [^] [ответить]    [к модератору]  
  • +3 +/
    Ты же не библиотеку меняешь, а софт который её использует, это же разные вещи.
     
  • 1.11, pavlinux (ok), 03:16, 13/04/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Балин... Зачотная вещь!!!

    pavel@suse64:~/> gcc -g0 -O3 -march=native main.c -ljemalloc
    pavel@suse64:~/> time ./a.out

    real    0m0.379s
    user    0m0.079s
    sys     0m0.299s
    pavel@suse64:~/> gcc -g0 -O3 -march=native main.c
    pavel@suse64:~/> time ./a.out

    real    0m1.077s
    user    0m0.292s
    sys     0m0.780s

    [code]
    #include <stdio.h>
    #include <stdlib.h>
    #include <jemalloc/jemalloc.h>

    #define SZ 0xFFFF

    int main(void)
    {
    int i;

    int **ARRAY = (int **) malloc(SZ * sizeof(int *));

    for (i = 0; i < SZ; i++) {
    if (i % 2) {
    ARRAY[i] = (int *) malloc(i);
    *ARRAY[i] = i;
    continue;
    }
    if (i % 3) {
    ARRAY[i] = (int *) calloc(1, i);
    *ARRAY[i] = i;
    continue;
    }

    ARRAY[i] = (int *) realloc(ARRAY[i], i);
    *ARRAY[i] = i;

    }

    for (i = 0; i < SZ; i++) {
    free(ARRAY[i]);
    ARRAY[i] = NULL;
    }
    free(*ARRAY);
    return 0;
    }
    [/code]

     
     
  • 2.15, cvsup (ok), 09:19, 13/04/2010 [^] [ответить]    [к модератору]  
  • +1 +/
    Теперь попробуй с тредами :)
     
     
  • 3.21, pavlinux (ok), 12:12, 13/04/2010 [^] [ответить]    [к модератору]  
  • +/
    >Теперь попробуй с тредами :)

    спать хотел... вечером доделаю

     
  • 1.12, pavlinux (ok), 04:25, 13/04/2010 [ответить] [показать ветку] [···]     [к модератору]  
  • +2 +/
    Другой пример, где JEMALLOC тормозит gcc -mtune native -O2 -W main c -ljem... весь текст скрыт [показать]
     
     
  • 2.36, Вова (?), 11:05, 14/04/2010 [^] [ответить]     [к модератору]  
  • +/
    надо сравнивать time a out и time LD_PRELOAD usr local lib libjemalloc... весь текст скрыт [показать]
     
     
  • 3.41, pavlinux (ok), 03:13, 15/04/2010 [^] [ответить]     [к модератору]  
  • +/
    А include jemalloc jemalloc h для чего придумали А на кой хрен нужна -lrt... весь текст скрыт [показать]
     
     
  • 4.42, Вова (?), 09:46, 15/04/2010 [^] [ответить]     [к модератору]  
  • +/
    Не придумали , а павлинукс придумал Твой инклюд - бессмысленен, как и однопо... весь текст скрыт [показать]
     
     
  • 5.44, pavlinux (ok), 23:38, 15/04/2010 [^] [ответить]     [к модератору]  
  • +/
    make install запусти увидишь, как я придумал Да нипёт, я создал ситуацию когда ... весь текст скрыт [показать]
     
     
  • 6.45, Вова (?), 10:02, 16/04/2010 [^] [ответить]     [к модератору]  
  • +/
    Заголовочные файлы, дружок, описывают мплементированные в соответствующих библи... весь текст скрыт [показать]
     
     
  • 7.47, Вова (?), 09:20, 07/05/2010 [^] [ответить]     [к модератору]  
  • +/
    не прошло и месяца http sourceware org git p glibc git a blob_plain f NEWS ... весь текст скрыт [показать]
     
  • 2.38, Sem (??), 12:41, 14/04/2010 [^] [ответить]    [к модератору]  
  • +/
    Лучше бы профайлинг сделал.
     
  • 1.16, cvsup (ok), 09:22, 13/04/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Забыли упомянуть, что в последние год-два jasone трудился под флагманом Фейсбука,
    о чем красночериво говорят копирайты. jasone, возвращайся, ты нам нужен :)
     
  • 1.18, sluge (ok), 10:05, 13/04/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    надо делать так чтобы glibc и другие стандартные биб-ки тоже его юзали-вот что даст настоящий прирост перфоманса
     
     
  • 2.19, Andrey Mitrofanov (?), 10:38, 13/04/2010 [^] [ответить]     [к модератору]  
  • +/
    Не нало -- это к Дрепперу Не даст и не настоящий -- к павлинуксу тремя постами ... весь текст скрыт [показать]
     
     
  • 3.23, sluge (ok), 12:50, 13/04/2010 [^] [ответить]    [к модератору]  
  • –1 +/
    ну если страшно сиди на малоке. никто ж не заставляет
     
     
  • 4.25, Andrey Mitrofanov (?), 13:06, 13/04/2010 [^] [ответить]    [к модератору]  
  • +/
    Ой, извините, да, на этой недели Анонимы@опеннет ещё glibc не форкали===
     
     
  • 5.30, Аноним (-), 16:50, 13/04/2010 [^] [ответить]     [к модератору]  
  • +/
    Ясно КСВ Сороковник стукнул, жена ушла, дочка беременная а квартира одна расп... весь текст скрыт [показать]
     
     
  • 6.33, Andrey Mitrofanov (?), 17:33, 13/04/2010 [^] [ответить]    [к модератору]  
  • +1 +/
    Доктор, не отвлекайся -- как свой glibc зарелизишь, ричи громче+
     
  • 2.35, Вова (?), 10:59, 14/04/2010 [^] [ответить]    [к модератору]  
  • +/
    >надо делать так чтобы glibc и другие стандартные биб-ки тоже его юзали-вот
    >что даст настоящий прирост перфоманса

    в данный момент достаточно и LD_PRELOAD, а в следующие версии glibc, несомненно, этот (или подобный) аллокатор - войдёт.

     
  • 1.20, fooser (?), 11:49, 13/04/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Так вооот почему третья лиса течет памятью как сито...
     
     
  • 2.24, sluge (ok), 12:50, 13/04/2010 [^] [ответить]    [к модератору]  
  • +/
    >Так вооот почему третья лиса течет памятью как сито...

    мож плугины текут?

     
     
  • 3.39, Sem (??), 12:44, 14/04/2010 [^] [ответить]    [к модератору]  
  • +/
    >>Так вооот почему третья лиса течет памятью как сито...
    >
    >мож плугины текут?

    Да это мозг течет. Видимо спутал аллокатор с GC.

     
  • 2.31, Ы (?), 16:56, 13/04/2010 [^] [ответить]    [к модератору]  
  • +/
    >Так вооот почему третья лиса течет памятью как сито...

    У лисы это родовое - фирменная фича тсссказать.
    Без jemalloc'a ея бы уже просто закопали, а так ещё хоть как то умудряется ползать. Но не (краснея) не хром же или (с ужасом) оперу юзать! Вон яблоки переделывают вебкит "чтоб как в хрому" похоже и лиса пойдёт той же тропинкой ...

     
  • 1.22, dronord (??), 12:14, 13/04/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    какие подводные камни?
     
  • 1.26, анонимус (??), 13:40, 13/04/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Интересно будет ли профит если Qt-embedded for ARM собрать с этой библиотекой?
     
     
  • 2.43, Вова (?), 09:56, 15/04/2010 [^] [ответить]    [к модератору]  
  • +/
    >Интересно будет ли профит если Qt-embedded for ARM собрать с этой библиотекой?
    >

    не надо пересобирать, необходимо только лишь задать LD_PRELOAD перед запуском приложения.
    Впрочем, этот аллокатор ни под арм, ни под мипсы не компилируется,в сырцах используется ассемблерная вставка (команда "pause"), аналогов этой команды под встроенные системы сходу не обнаружил, подменил на "nop" - получил сегфалт при старте. Нужно советоваться с отцами.

     
  • 1.27, VoDA (ok), 14:36, 13/04/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    и что только люди не делают чтобы не применять управляемую память =)
     
  • 1.28, Anon (?), 16:15, 13/04/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Забыли написать о том, что этот аллокатор сливает гугловому ptmalloc'у
     
     
  • 2.32, Diogene the Open Source programmer (?), 16:59, 13/04/2010 [^] [ответить]    [к модератору]  
  • +/
    >Забыли написать о том, что этот аллокатор сливает гугловому ptmalloc'у

    Ты забыл указать на каких задачах. jemalloc - общесистемный, во фряхе начиная с 7, ptmalloc - вещь нишевая ...

     
  • 2.46, Sem (??), 14:23, 16/04/2010 [^] [ответить]    [к модератору]  
  • +/
    >Забыли написать о том, что этот аллокатор сливает гугловому ptmalloc'у

    Какое отношение ptmalloc имеет к гуглу? Может перепутал с tcmalloc?

     
  • 1.34, Вова (?), 19:25, 13/04/2010 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    на нормальных тестах разница ВЕСЬМА значительная
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor