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
     
  • 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, 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, 09:19, 13/04/2010 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +1 +/
    Теперь попробуй с тредами :)
     
     
  • 3.21, pavlinux, 12:12, 13/04/2010 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    >Теперь попробуй с тредами :)

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

     
  • 1.12, pavlinux, 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, 03:13, 15/04/2010 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    А include jemalloc jemalloc h для чего придумали А на кой хрен нужна -lrt... весь текст скрыт [показать]
     
     
  • 4.42, Вова, 09:46, 15/04/2010 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Не придумали , а павлинукс придумал Твой инклюд - бессмысленен, как и однопо... весь текст скрыт [показать]
     
     
  • 5.44, pavlinux, 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, 09:22, 13/04/2010 [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    Забыли упомянуть, что в последние год-два jasone трудился под флагманом Фейсбука,
    о чем красночериво говорят копирайты. jasone, возвращайся, ты нам нужен :)
     
  • 1.18, sluge, 10:05, 13/04/2010 [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    надо делать так чтобы glibc и другие стандартные биб-ки тоже его юзали-вот что даст настоящий прирост перфоманса
     
     
  • 2.19, Andrey Mitrofanov, 10:38, 13/04/2010 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Не нало -- это к Дрепперу Не даст и не настоящий -- к павлинуксу тремя постами ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.23, sluge, 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 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    в данный момент достаточно и LD_PRELOAD, а в следующие версии glibc, несомненно,... весь текст скрыт [показать] [показать ветку]
     
  • 1.20, fooser, 11:49, 13/04/2010 [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    Так вооот почему третья лиса течет памятью как сито...
     
     
  • 2.24, sluge, 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 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    не надо пересобирать, необходимо только лишь задать LD_PRELOAD перед запуском пр... весь текст скрыт [показать] [показать ветку]
     
  • 1.27, VoDA, 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