The OpenNET Project / Index page

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

Google опубликовал новый вариант системы распределения памяти TCMalloc

13.02.2020 21:43

Компания Google представила новый вариант системы распределения памяти TCMalloc, которая используется во многих внутренних проектах Google. Код TCMalloc написан на С++ и распространяется под лицензией Apache. Для работы требуется наличие компилятора с поддержкой C++17 для языка C++, и C11 для языка Си (gcc 9.2+ или clang 9.0+). Из операционных систем поддерживается только Linux (x86, PPC).

Примечательно, что с 2005 года существует ещё один вариант tcmalloc, который поставлялся в составе пакета gperftools (Google Performance Tools). Это два разных проекта, имеющих общие корни. Новый TCMalloc является скорее попыткой открыть код актуальных внутренних наработок Google, но он пока не нацелен на предоставление стабильного ABI и поддержку широкого спектра операционных систем. Сопровождение старого tcmalloc из gperftools будет продолжено, но новые возможности, такие как привязка кэша к CPU, в него переносить не планируется.

TCMalloc включает реализацию Си-функции malloc() и С++ оператора "new", оптимизированных для достижения высокой производительности и применения в многопоточных приложениях. TCMalloc также предоставляет возможности интроспекции и профилирования, позволяющие приложению получить подробные сведения об использовании памяти в куче. В коде применяются оптимизации на основе современных возможностей языка C++, таких как оператор delete с указанием размера из C++14 и выделение памяти с выравниванием из C++17.

TCMalloc состоит из трёх компонентов: фронтэнда с кэшем для быстрого выделения и освобождения памяти, прослойки для наполнения кэша фронтэнда и бэкенда, выполняющего такие операции, как получение памяти от операционной системы, управления большими кусками неиспользованной памяти и возвращение лишней памяти обратно в ОС. Кэш избавлен от блокировок и работает в привязке к ядрам CPU, но откатывается на модель кэширования в привязке к потокам в случае отсутствия необходимой функциональности в ядре ОС (привязка кэша к CPU работает только в свежих ядрах Linux). Бэкенд поддерживает работу как с обычными страницами памяти, так и со страницами увеличенного размера (hugepage).

Основные особенности TCMalloc:

  • Быстрое выделение и освобождение памяти с использованием кэширования. Большинство операций выделения памяти не требуют блокировки, что обеспечивает хорошую масштабируемость для многопоточных приложений с высоким параллелизмом выполнения работ;
  • Гибкое использование памяти, позволяющее повторно использовать освобождённые области памяти для объектов различного размера или возвращать память операционной системе;
  • Низкие накладные расходы на каждый объект за счёт выделения страниц объектов одинакового размера и эффективного представления мелких объектов. Поддерживаются логические страницы, размером 4KiB, 8KiB, 32KiB и 256KiB. Например, при запросе блоков в 512 байт памяти, будет выделена целая страница 4KiB под 512-байтовые объекты, в которой сможет уместиться 8 таких объектов;
  • Возможна тонкая настройка через определения размера кэша и параметров интенсивности возвращения памяти в ОС;
  • Предоставление детальной информации для анализа использования памяти приложением.


  1. Главная ссылка к новости (https://github.com/google/tcma...)
  2. OpenNews: Miсrosoft открыл код системы распределения памяти mimalloc
  3. OpenNews: Менеджер распределения памяти jemalloc выпущен в виде отдельной библиотеки
  4. OpenNews: В OpenBSD добавлен экстра-параноидальный режим работы malloc
  5. OpenNews: Ядро Linux не может мягко обрабатывать ситуации с нехваткой памяти
  6. OpenNews: В systemd ожидается включение обработчика нехватки памяти oomd, разработанного в Facebook
Лицензия: CC BY 3.0
Наводку на новость прислал Artem S. Tashkinov
Короткая ссылка: https://opennet.ru/52364-malloc
Ключевые слова: malloc, tcmalloc, memory, google
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (103) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 23:04, 13/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    Для интересующихся - нет, это не тот же tcmalloc из gperftools.

    https://github.com/gperftools/gperftools/issues/1169#issuecomment-583981555

     
     
  • 2.7, заминированный тапок (?), 01:25, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +20 +/
    если читать новости дальше первого предложения, то именно так все в статье и написано. причем в самом начале
     
  • 2.17, Аноним (-), 06:31, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кэп сегодня жжот напалмом! Но залогиниться всеж забыл.
     
  • 2.33, Аноним (33), 11:25, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тот tcmalloc из gperftools запомнился тем, что вешал пк, когда памяти визуально ещё порядка 30% было. Странная штука была, в общем, напрасно его пихали.
     

  • 1.2, neAnonim (?), 23:13, 13/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    1) tcmalloc медленнее чем gemalloc который применяется в fbsd
    2) эти аллокаторы предназначены для бездумного использования. когда треды ломятся в одну точку по очереди

    единственное что тебе действительно нужно это mmap() и читать dodbook (Richard Fabian)

    альтернатива: ищи простые реализации аллокаторов на gh и даже они дают прирост 500%

     
     
  • 2.5, Аноним (-), 00:08, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > 1) tcmalloc медленнее чем gemalloc который применяется в fbsd

    Что, вот прямо во всех случаях? И вы, конечно, покажете бенчмарки, подтверждающие эту идею?

    > 2) эти аллокаторы предназначены для бездумного использования. когда треды ломятся в одну точку по очереди

    Есть какая-то статистика насколько это соответствует поведению разного софта?

     
     
  • 3.10, neAnonim (?), 02:23, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А что по твоему происходит если треды начинают вызывать общий на всех malloc() ?

    Тебе действительно нужна эта mid-bloat-level прослойка, если ты такой умный?

    моя основная мысль: прокачивай квалификацию или иди в питон

     
     
  • 4.16, Аноним (-), 06:31, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    define общий на всех malloc , для начала Ну там как описание flow кто и что д... большой текст свёрнут, показать
     
     
  • 5.23, neAnonim (?), 08:44, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    google Wave, g reader, g talk, g labs, picasa, Google Glass...

    да дох.много проектов были сделаны и закрыты от большого ума. Да?

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

     
     
  • 6.25, Антонидас (?), 09:19, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >google Wave, g reader, g talk, g labs, picasa, Google Glass...
    >да дох.много проектов были сделаны и закрыты от большого ума. Да?

    Проекты закрывают потому что они перестают приносить достаточно бабла, а не потому что объявился какой-то дядя и сказал: "У вас тут говнокод, вы, похоже, нужных книжек не читали, закрывайтесь"

     
     
  • 7.35, neAnonim (?), 11:44, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https://vc.ru/amp/52234
    вот vc сделали статью с более полным перечнем закрытых проектов по годам и не везде известны причины закрытия.

    А у тебя "эксперт" для всего один шаблон.

     
     
  • 8.48, колба (?), 14:38, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    причины закрытия всегда сводятся к одному команда гугл потеряла интерес к проек... текст свёрнут, показать
     
     
  • 9.53, Аноним (-), 18:11, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Интерес они теряют если проект не приносит бабки и вбухивание усилий себя не оку... текст свёрнут, показать
     
  • 6.52, Аноним (-), 18:09, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Google тогда уж Именно При скудоумии случается автоВАЗ - фуфло до упора ... большой текст свёрнут, показать
     
     
  • 7.85, neAnonim (?), 11:03, 15/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    у гулага дойная корова реклама и они готовы убить youtube, android и что угодно, но высосать ее полностью и продать всех пользователей.

    призыв использовать mmap() означает, что нужно использовать его напрямую, включать голову и организовать memory pool если нужно.

    если ты не уперся в пропускную способность памяти и не пришел к dod сам. Твои use кейсы вполне типичные.

     
     
  • 8.103, Аноним (-), 03:09, 18/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Если они именно полностью - тогда у них поток денег кончится Так что фиг, круго... текст свёрнут, показать
     
  • 5.24, asdasd (?), 09:15, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > чтобы кодить такую штуку чисто для лулзов

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

     
     
  • 6.29, Аноним (29), 10:59, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Как ни странно, макаки Go не осиливают, они лезут, в основном, в скриптоту, а из компилируемых предпочитают жабу.
    А Go высоко оценили бывшие сишники, которым надоело заморачиваться с ручным управлением памятью и прочими неудобствами. Как-никак уже 2020 год и на рынке языков программирования есть из чего выбрать.
     
     
  • 7.42, Аноним (-), 13:36, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Как ни странно, макаки Go не осиливают, они лезут, в основном, в
    > скриптоту, а из компилируемых предпочитают жабу.

    Осиливают навороченную жабу с наследованием-полиморфизмом, dependency-injection, дженериками и аннотациями, но не осиливают Go?
    Логика анонимов такая "логичная".

    > А Go высоко оценили бывшие сишники, которым надоело заморачиваться с ручным управлением памятью и прочими неудобствами.

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

     
     
  • 8.50, Аноним (50), 15:17, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем это всё осиливать юному Java-разработчику Слабать код можно как попало,... текст свёрнут, показать
     
  • 8.89, Аноним (29), 13:09, 15/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Осиливают навороченную жабу с наследованием-полиморфизмом, dependency-injection,... текст свёрнут, показать
     
     
  • 9.91, Аноним (-), 15:49, 15/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А клоунада анонимов, когда от них требуется написать не вброс и не очередной ярл... текст свёрнут, показать
     
  • 7.44, nelson (??), 13:50, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >> Go высоко оценили бывшие сишники

    оценили. но не бывшие и негативно (в контексте его использования в системном программирования). но для веб-макакинга язычёк вполне подходит
    >> заморачиваться с ручным управлением памятью и прочими неудобствами

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

     
     
  • 8.46, Аноним (46), 14:26, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А libc so и libgcc so 8212 они, конечно, просто так на диске валяются ... текст свёрнут, показать
     
     
  • 9.54, Аноним (-), 18:20, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Они не являются НЕОТЪЕМЛИМЫМИ Как доктор, умеющий создавать себе arena у в абсо... текст свёрнут, показать
     
  • 8.83, Аноним (83), 02:52, 15/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Go это не системный язык Но все равно go это полное г Как всегда распиарин для... текст свёрнут, показать
     
     
  • 9.94, Аноним (94), 14:34, 16/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Что за идиоты тебя минусуют Действительно, Си -- системный язык, а Go -- прикла... текст свёрнут, показать
     
     
  • 10.102, Аноним (-), 03:06, 18/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Это не чистый zero runtime, а вполне себе 6 метров рантайма в хелловорлде элем... текст свёрнут, показать
     
  • 8.88, Аноним (29), 12:17, 15/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Похоже, ты уже давно не программируешь, и не в курсе дел не только относительно ... текст свёрнут, показать
     
     
  • 9.93, Аноним (83), 09:06, 16/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну просвети уже нас всех Что там с go и что там с современным С А то мы тут ол... текст свёрнут, показать
     
  • 2.12, Аноним (1), 02:57, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > tcmalloc медленнее чем gemalloc который применяется в fbsd

    Про gemalloc я ничего не слышал, но если речь о jemalloc, то тесты с вами не согласны:

    http://ithare.com/testing-memory-allocators-ptmalloc2-tcmalloc-hoard-jemalloc

     
     
  • 3.14, neAnonim (?), 03:54, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ты про эту картинку :
    http://ithare.com/wp-content/uploads/malloc-cpu.png

    У tcmalloc экспоненциальный рост начиная с 13ти потоков и уже на 20 jemalloc жрет меньше.

    "Производительность для не очень многопоточных приложений с большим количеством памяти на борту" вроде так в новости :)

    как проснусь поищу тесты которые помню я. (еще более ужасные для tc)

    (хотя в новости указанно что у гулага целых 2 tcmalloc)

     
  • 3.18, Аноним (-), 06:40, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ага. То-есть, если копнуть, оказывается что если и делает - то мягко говоря не всегда и не везде, и на серебряную пулю ни разу не похоже. А пальцатый чудак рассуждающий про питон настолько крут что даже название алгоритма у него забагованое. Хы! Кстати а это какой из tcmalloc'ов на графике?
     
     
  • 4.72, Аноним (72), 22:03, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это смотря чем копать - И то ли дело анонимные анонимы, совсем недавно с умным ... большой текст свёрнут, показать
     
     
  • 5.79, Аноним (-), 00:01, 15/02/2020 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 4.74, Аноним (74), 22:58, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Кстати а это какой из tcmalloc'ов на графике?

    Угадай, учитывая что сабж только на днях вылупился.

     

  • 1.3, Аноним (3), 00:00, 14/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    Это та технология, которая  используется в Google chrome?
     
     
  • 2.27, Q2W (?), 10:09, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Тонко!
     

  • 1.4, Аноним (4), 00:07, 14/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Оптимальный аллокатор обычно входит в стандартную библиотеку. Сторонние аллокаторы - это обычно трейдоф в сторону производительности в предположении, что памяти в компе бесконечно много.
     
     
  • 2.9, Crazy Alex (ok), 02:23, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Точнее, это самые разные варианты трейдоффа - банальное предположение и количестве попыток выделения памяти из разных потоков может уже много чего поменять. Или, как у меня когда-то было, когда понятен специфический паттерн запросов. В общем, те, кому оно нужно, уже об этом знают.
     

  • 1.6, klalafuda (?), 00:27, 14/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > x86, PPC

    ARM не поддерживается? Как подвезут - приходите. Следующий..

     
     
  • 2.8, Аноним (8), 01:42, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +11 +/
    ...и Гугл опустив голову грустно побрёл прочь допиливать поддержку АРМа для клалафуды.
     
     
  • 3.28, Аноним (28), 10:20, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не для Клалафуды, а для свего же родного Андрюши.
     
     
  • 4.39, гугель (?), 12:52, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    пипл и так хавает. А тех, кто могли такое написать, мы уже уволили - какие-то они нетолерантные были, и к тому же денег много хотели, а испытывать состояние глубочайшего счастья от самого факта быть достойным рабом нашей корпорации - почему-то нет.
     
  • 2.11, Аноним (11), 02:38, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/

    Breaking news! Клава наказывает Гугл!!!
     
  • 2.19, Аноним (-), 06:42, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    О, круто!
    - Если гугл не релизит сорцы, пох верещит что негодяи, патчи зажимают, на опенсорсе паразитируют!!!111
    - Если гугл релизит сорцы, его сосед по палате вопит что его любимая шняга там не поддерживается, негодяи!!!1111

    Я даже знаю как вам всем таким красивым угодить. Допилить AI и прислать вам уже наконец терминаторов, поговорить по душам. Вот тогда вам обоим станет уже наконец хорошо.

     
     
  • 3.22, пох. (?), 07:11, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну а не такое уг релизнуть гугль не мог?

    Вот и остается гадать - то ли копрорация добра намеренно релизит все так, чтоб только выкрасить и выбросить (как это произошло с in-kernel lustre, причем, (совпадение?! Конечно, совпадение!) сразу после того как сдох "нинужнанинужна, есть в ядре!" fuse-lustre), то ли это карма у них такая...


     
     
  • 4.59, Аноним (-), 20:32, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну а не такое уг релизнуть гугль не мог?

    Ты хотел сорцы? Вот, пожалуйста, в виде как есть. А то задачи гугла совпадут с твоими никто и не обещал.

    > Вот и остается гадать - то ли копрорация добра намеренно релизит все
    > так, чтоб только выкрасить и выбросить

    Сорц отгрузили, а окажется ли он полезен тебе, в твоих задачах - наверное не проблема гугла?

    Если тебе надо код от чуваков которые хотят всех осчастливить, даже не спрашивая надо ли им это, это ты к пыхтонрастам каким, у них есть для тебя множество кульных шняг. Вон, весь гитхаб к твоим услугам, обкачайся :)

    > есть в ядре!" fuse-lustre), то ли это карма у них такая...

    Видимо таки карма. Было б нужно кому всерьез - не сдохло, наверное.

     
  • 3.55, сосед по палате (?), 19:53, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вон...
     

  • 1.13, nelson (??), 03:25, 14/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    "гении" хухля не осилили аллокатор на чистом С. "прогресс", однако...
     
     
  • 2.15, leap42 (ok), 04:21, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а почему нужно писать именно на Си? (я сам немного сишник если что, но написание malloc даже уровня K&R malloc нахожу сомнительным удовольствием)

    на Си уже полно аллокаторов (jemalloc, тот который из glibc (не помню названия), другие), почему не написать на плюсах?

     
     
  • 3.43, nelson (??), 13:38, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> почему не написать на плюсах?

    1) потому что современные реализации С++ являются, по сути, языком сверхвысокого уровня и не подходят для решения задач из области системного прграммирования
    2) создание аллокатора памяти - типичная задача, для решения которой необходим чистый С

     
     
  • 4.47, Аноним (46), 14:31, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Может быть, лет через 5-10 вы случайно наткнётесь на этот свой комментарий и с ностальгической улыбкой подумаете, какой же вы были смешной и глупый.

    Но сейчас — вы просто позорно слились, с чем вас и поздравляю.

     
     
  • 5.51, nelson (??), 16:26, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    дайте угадаю - вы STL-фаг, который без разбору использует возможности стандартной библиотеки где попало
    вы, конечно, можете использовать возможности "современного" С++ при разработке аллокатора памяти в том числе, только не надо заявлять о каких-то "сливах" тем людям, которые более разборчивы в выборе применяемых инструментов
     
  • 5.60, Аноним (-), 20:35, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Но сейчас — вы просто позорно слились, с чем вас и поздравляю.

    На плюсах нет ни 1 сколь-нибудь востребованной операционки. Самое крутое системное программирование на плюсах которое в бошку приходит - ардуина, лол! Только там оно в режиме этакого яваскрипта для нубов, уж сорь! Их предел C++ это serial.begin() XD.

     
     
  • 6.73, Аноним (-), 22:27, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Самое крутое системное программирование
    > на плюсах которое в бошку приходит - ардуина, лол!

    Haiku? Genode? Не, не слышал, но ценное мнение …

     
     
  • 7.75, Аноним (-), 23:49, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Haiku? Genode? Не, не слышал, но ценное мнение …

    Еще реактос надо вспомнить. Без него список жесткой маргинальщины был бы неполным.

    Кстати, за всю свою жизнь я видел 1 живого пользователя гайки, 0 живых пользователей реактоса и ни разу в жизни не пересекался с генодой вообще. При всем моем интересе к странным железкам и юзкейсам.

     
  • 6.87, Аноним (87), 12:00, 15/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >На плюсах нет ни 1 сколь-нибудь востребованной операционки.

    В манямирках-то конечно. I/O Kit из OSX пойдет как пример системного программирования на плюсах?

     
     
  • 7.100, Аноним (-), 02:34, 18/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > В манямирках-то конечно. I/O Kit из OSX пойдет как пример системного программирования
    > на плюсах?

    IOKit это как я понимаю некая нашлепка над ядром. А практически вся система, включая кернель, дрова и прочее таки си. А так если какие апликухи и прочее брать, окажется что у эпла там еще и swift какой-нибудь, но вот сказать что "система написана на swift" будет все же странно.

     
  • 6.90, Аноним (74), 15:21, 15/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Винда пойдёт в качестве примера? Уж как минимум, всё, что использует COM - это либо плюсы, либо .NET. А учитывая, что MSVC - это компилятор С++, который случайно поддерживает подмножество C, вполне вероятно, что там всё, включая ядро, на C++ (который, возможно, используется как C с классами, но тем не менее).
     
     
  • 7.97, Аноним (97), 02:09, 18/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А в каком месте COM является системным программированием Системное в NT это воо... большой текст свёрнут, показать
     
  • 2.20, Аноним (-), 06:46, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Гугл вообще странноватые типы - плюсы юзают часто вообще хз зачем. Потому что V2 лучше V1, а something+ лучше чем something, а уж если something++ так это вообще офигеть, дайте два.

    Но это еще что, я вот видел как для билдовки проекта на два файла предлагали билдсистему на яве втулить на полном серьезе. Я, правда, решил что gcc *.c -o out мне на проекте такого уровня как-то сильно проще и быстрее, бида-бида :)

     
     
  • 3.26, bf (??), 09:41, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Здесь файлов поболее двух, но

    > Building TCMalloc
    > Bazel is the official build system for TCMalloc.

     
     
  • 4.61, Аноним (-), 20:38, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Здесь файлов поболее двух, но

    ...но да, гугол и тут верен себе, используя по сути свой внутренний крап :). Ну это ты еще хромиум билдить не пытался просто, во где полный крындец. Надо скачать половину интернета. Точнее, оно само попытается скачать вам половину интернета. Хрен знает откуда и зачем, но у этих гамадрилов в их зоо^W кампусе видите ли такой воркфлоу.

     
  • 3.45, Crazy Alex (ok), 14:19, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Гугл, как и дюбая вменяемая корпорация, смотрит ещё на сопутствующие услоаия. Если плюсовая команда есть, для плюсового кода гораздо лучше средства статического анализа, есть куча другого плюсового софта, который с новым проектом будет связан - проще на плюсах пилить. Плюс плюсы лают более поддерживаемый код. С системами сборки тем более - чем пользуются - с тем и выкладывают.
     
     
  • 4.65, Аноним (-), 21:00, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    На самом деле все проще - в упомянутом случае прогер просто хватнул привычный ту... большой текст свёрнут, показать
     
  • 2.21, Аноним (21), 06:58, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Скажите спасибо, что на джаве не написали.
     
     
  • 3.31, Аноним (31), 11:23, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Спасибо, что не на расте!
     
     
  • 4.36, анон (?), 11:48, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    а что не так с растом?
     
     
  • 5.37, pda (?), 12:25, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вызывает пригорания у известной аудитории. ;-)
     
  • 5.38, Аноним (38), 12:33, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Небезопасен.
     
     
  • 6.56, Аноним (56), 19:55, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А я абзолюдно збагоен.
     
  • 5.66, Аноним (-), 21:01, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > а что не так с растом?

    Вендорлокнут на мозиллу.корп, которая делом доказала что те еще типы, даже хреновее чем гугл. И зависеть от именно этих - да ктулху упаси.

     
     
  • 6.86, Wilem (?), 11:06, 15/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Они собираются Rust Foundation создать для отвязки от мозиллы.
     
     
  • 7.101, Аноним (-), 02:36, 18/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Они собираются Rust Foundation создать для отвязки от мозиллы.

    Ну вот когда и если, и еще и репы от них отвяжут - тогда и приходите. А покамест я мозильских вендорлоков с аддонами уже вкусил выше крыши и за добавкой не приду нифига, еще не хватало чтоб меня так в программировании с компонентами и либами могли натянуть.

     

  • 1.30, Аноним (30), 11:04, 14/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    https://github.com/microsoft/mimalloc
    https://github.com/plasma-umass/Mesh
    https://github.com/mjansson/rpmalloc
    https://github.com/SergeyMakeev/smmalloc
    https://github.com/ennorehling/dlmalloc
    https://github.com/r-lyeh-archived/ltalloc
    https://github.com/emeryberger/Hoard
    https://github.com/jemalloc/jemalloc
    https://github.com/ezrosent/allocators-rs
     
     
  • 2.32, Аноним (31), 11:24, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    что за сорта г?
     
  • 2.34, InuYasha (?), 11:38, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    https://google.github.io/tcmalloc/ сабж забыл
     

  • 1.40, Аноним (40), 13:17, 14/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Гугл уже взялся и рынок памяти перераспределять?
     
  • 1.41, Mrueff (?), 13:27, 14/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    При выделении память автоматически инициализируется ненавязчивой рекламной строкой.
     
  • 1.49, abi (?), 15:15, 14/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А телеметрия отключается?
     
  • 1.57, Павел Отредиез (?), 20:19, 14/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я пьян, и malloc это
    Lock
    mmap(Null,...)
    Unlock
     
     
  • 2.58, Павел Отредиез (?), 20:28, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Это simple malloc в uClibc.
     
     
  • 3.62, Павел Отредиез (?), 20:42, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А mmap это сискол.
     
     
  • 4.63, Павел Отредиез (?), 20:43, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Поговорю пьяный сам с собой, ничего парни?
     
     
  • 5.64, Павел Отредиез (?), 20:54, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Теперь господа классные программисты пусть переделают это в реализацию mmap, допустим для ядра Linux. А malloc это всего лишь частный случай mmap. Его усложнять пощадите наши мозги.
     
     
  • 6.67, Аноним (-), 21:04, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Теперь господа классные программисты пусть переделают это в реализацию mmap, допустим для
    > ядра Linux. А malloc это всего лишь частный случай mmap. Его
    > усложнять пощадите наши мозги.

    Malloc не всегда mmap. Это раз. Два - могут быть какие-то специальные соображения, при которых mmap не катит. Ну вот конкретно в сабже оно пошло из профайлера. А в случае mmap это интересно как должно быть? В смысле, профайлинг? А, сразу системозависимыми тулзами, лезущими в кишки ядра? :)

     
     
  • 7.68, Павел Отредиез (?), 21:13, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, malloc всегда mmap. Ты анон ошибаешься. Посмотри исходники.  newlib uClibc musl.
     
     
  • 8.69, Павел Отредиез (?), 21:17, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    И в BSD тоже malloc вызывает syscall mmap ... текст свёрнут, показать
     
     
  • 9.70, Павел Отредиез (?), 21:22, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    В BSD вообще libc вызывает 5 syscall ов Остальное ассемблер Посмотришь на open... текст свёрнут, показать
     
     
  • 10.77, Аноним (-), 23:57, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну позырь сорц mirai, увидь как хацкеры делают подобные выходки вообще без асма ... текст свёрнут, показать
     
  • 8.76, Аноним (-), 23:54, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А ежели я найду malloc который не mmap А то malloc ВНЕЗАПНО бывает даже на ш... текст свёрнут, показать
     
     
  • 9.80, Павел Отредиез (?), 00:38, 15/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну в бутлоадерах тупо передвигается указатель на свободную память Там и free не... текст свёрнут, показать
     
  • 9.81, Павел Отредиез (?), 00:46, 15/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Нет системного вызова malloc Есть mmap ... текст свёрнут, показать
     
     
  • 10.82, Павел Отредиез (?), 00:47, 15/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Можно только урвать побольше, а потом выдавать ... текст свёрнут, показать
     
  • 7.71, Павел Отредиез (?), 21:44, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Или по твоему: libc один раз запрашивает mmap, а потом из него выделяет malloc'и? А... Может и так. С ldpreload.
     
     
  • 8.78, Аноним (-), 23:59, 14/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Еще можно man brk и sbrk, чтоли ... текст свёрнут, показать
     
     
  • 9.84, neAnonim (?), 05:51, 15/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    deprecated и в linux, bsd стек это тоже mmap остался только один сискол н... текст свёрнут, показать
     
     
  • 10.98, Аноним (-), 02:19, 18/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Чего-то в Linux Programmer s manual вообще совсем ни звука про то что это - depr... текст свёрнут, показать
     
  • 6.92, Ordu (ok), 20:05, 15/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А malloc это всего лишь частный случай mmap

    Ровно наоборот. mmap -- это частный случай malloc. Иногда malloc безболезненно можно заменить на mmap, иногда даже с профитом -- если ты выделяешь помногу и редко, то офигенно должно зайти.

    Но если ты выделяешь/освобождаешь довольно часто, то каждый раз платить тактами процессора за сисколл -- слишком жирно будет. Тут история та же самая что и с read/write и fread/fwrite. Буферизованный ввод/вывод резко быстрее, если тебе надо читать/писать маленькими кусками.

     
     
  • 7.99, Аноним (-), 02:25, 18/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Ровно наоборот. mmap -- это частный случай malloc.

    Да ну ладно?! А сможешь malloc()-ом по файлу шариться? В mmap так можно и это половина его предназначения :)

    > что и с read/write и fread/fwrite. Буферизованный ввод/вывод резко быстрее, если
    > тебе надо читать/писать маленькими кусками.

    А прикинь, mmap()-ом еще можно файло в память отмаппить как "группу адресов" и дальше делать файловый IO как будто это у нас такой очень большой массив* и при этом ... ну, по сути, почти интерфейс к дисковому кэшу ядра, совершенно прозрачный и выглядящий как просто регион памяти.

    * На 32-битных архитектурах массив "почему-то" не такой уж и большой, что накладывает ограничения на размеры файлов :)

     
     
  • 8.104, Ordu (ok), 11:10, 18/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Мы говорим про выделение памяти, или про файловый ввод-вывод Мне казалось про п... текст свёрнут, показать
     

  • 1.95, Dennis (??), 11:46, 17/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересно, добавили работу в системах с musl libc. Было бы здорово!
     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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