The OpenNET Project / Index page

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

Выпуск cache-bench 0.2.0 для исследования эффективности кэширования файлов

19.12.2021 11:17

Спустя 7 месяцев после предыдущего релиза вышел cache-bench 0.2.0. Cache-bench - это Python скрипт, позволяющий оценить влияние настроек виртуальной памяти (vm.swappiness, vm.watermark_scale_factor, Multigenerational LRU Framework и прочих) на производительность задач, выполнение которых зависит от кэширования файловых операций чтения, особенно в условиях нехватки памяти. Код открыт под лицензией CC0.

Код скрипта в версии 0.2.0 почти полностью переписан. Теперь вместо чтения файлов из указанной директории (в новой версии опция -d удалена) производится чтение из одного файла фрагментами указанного размера в случайном порядке.

Добавлены опции:

  • --file - путь к файлу, из которого будет производиться чтение.
  • --chunk - размер фрагмента в кибибайтах, по умолчанию 64.
  • --mmap - читать из memory-mapped файлового объекта вместо чтения из файлового дескриптора.
  • --preread - перед началом теста предварительно прочитать (кэшировать) указанный файл путем последовательного чтения фрагментами размером 1 MiB.
  • --bloat - добавлять считываемые фрагменты в список с целью увеличения потребления памяти процессом и создания в дальнейшем нехватки памяти.
  • --interval - интервал вывода (логирования) результатов в секундах.


  1. Главная ссылка к новости (https://github.com/hakavlad/ca...)
  2. OpenNews: Intel развивает новую открытую архитектуру прошивок Universal Scalable Firmware
  3. OpenNews: Facebook открыл код для обработки ситуации нехватки памяти в системе
  4. OpenNews: Выпуск Nohang 0.1, предотвращающего OOM в пространстве пользователя
  5. OpenNews: Выпуск обработчика нехватки памяти earlyoom 1.4
  6. OpenNews: Компания Google представила патчи многоуровневого LRU для Linux
Автор новости: hakavlad
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/56376-cache
Ключевые слова: cache
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (7) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 12:24, 19/12/2021 [ответить]  
  • +/
    >Теперь вместо чтения файлов из указанной директории (в новой версии опция -d удалена) производится чтение из одного файла фрагментами указанного размера в случайном порядке.

    Так это же ухудшение.

     
     
  • 2.2, Аноним (2), 13:35, 19/12/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Непонятное "улучшение". Размер файла теперь должен быть как минимум сопоставим с размером файлового кеша. Иначе скэшируется он полностью и что там потом бенчить - память? Файлов в гигабайты с лету не найду - разве что образы дисков.
     
     
  • 3.3, foo (?), 14:33, 19/12/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >Размер файла теперь должен быть как минимум сопоставим с размером файлового кеша. Иначе скэшируется он полностью и что там потом бенчить - память?

    Для этогои писался изначально - исследовать влияние факторов на сохранность кэша при нехватке памяти. Оригинальный основной режим - это читать из небольшого файла (100-300 МБ, сопоставимого по размеру с обычным размером кэша разделяемых библиотек) и добавлять прочитанное в список, таким образом создавая в итоге нехватку памяти.

     

  • 1.5, pavlinux (ok), 15:22, 20/12/2021 [ответить]  
  • +/
    И что с этим делать? Опять руками дроч...^W настраивать sysctl vm.*?

    21 век уж как 21 год, ...
    $ sysctl -A | grep vm. | wc -l
    45

    ~ 45 параметров, основная масса из них с одним аргументом, половину выкинуть можно,
    типа vm.mmap_min_addr,  vm.panic_on_oom, vm.mmap_rnd_bits, vm.laptop_mode, vm.legacy_va_layout, ...

    Ну ебнвр, вставляйте в ваши хелловорлды анализ и автотюнинг на его базе со сравнением результатов.

    for ((i=0; i<A; i++)
       for ((j=0; j<A; j++)
          for ((k=0; k<A; k++)
             for ((l=0; l<A; l++)
                           ...

                           ...

    Да, тут мозг нужен, а не тупа R/W с секундомером измерить.

     
     
  • 2.6, foo (?), 15:41, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >тут мозг нужен

    Интегрировать скрипт с нейросетью?

     
     
  • 3.7, pavlinux (ok), 15:49, 20/12/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>тут мозг нужен
    > Интегрировать скрипт с нейросетью?

    Что за мода, называть всё что сложнее if ( a > b ) - нейросетью? )))


    Обычная комбинаторика, нет там нейросвязей.

    ...
    for (.....)

       set_sysctl_next(i);

       test = mega_bruteforce_bench(i);

       if (test > best)
            save_sysctl_param(i);

       best = max(best, test)

    ...


    Там даже проблема не в переборе и сравнении, сколько в адекватности результатов
    выдваваемых mega_bruteforce_bench(i);  Нужно быть на 146% уверенным, что изменение
    в sysctl влияет на этот тест.

    А то ж можно факториал 45 раз воздух обогревать.
    Автор вон, дрочит vm.swappiness, а в реальности окажется что fs.file-nr кривой,
    или неправильно понят fs.xfs.rotorstep, иль из гугла скопипастили параметр монтирования barrier=1  

     
  • 2.8, Ordu (ok), 14:17, 21/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > for ((i=0; i<A; i++)
    >   for ((j=0; j<A; j++)
    >      for ((k=0; k<A; k++)
    >         for ((l=0; l<A; l++)

    Это хрень какая-то. Напрашивается жеж принять допущение монотонности, и дальше градиентным спуском. В смысле замеряешь градиент, двигаешься в ту сторону, замеряешь ещё раз, и тп. Вектор из 45 элементов -- это много, конечно, но какая собственно разница, если компьютер будет пыхтеть мерять?

    > Да, тут мозг нужен

    В том-то и дело. Брутфорсом против комбинаторики далеко не уедешь.

     

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



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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