The OpenNET Project / Index page

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

В ядре Linux 6.5 появится системный вызов cachestat

13.07.2023 21:54

В кодовую базу, на основе которой формируется ядро Linux 6.5, принято изменение с реализацией нового системного вызова "cachestat", позволяющего программам в пространстве пользователя запрашивать более детальную статистику из страничного кэша на стороне ядра.

Расширяя уже существующий системный вызов "mincore", используемый для определения, присутствуют ли страницы в памяти, вызов "cachestat" позволяет запрашивать более подробную статистику кэша страниц и стремится обеспечить большую масштабируемость. Системный вызов "cachestat" сообщает такие сведения, как количество прокэшированных страниц, грязных (dirty) страниц, вытесненных страниц, недавно вытесненных страниц и страниц, отмеченных для отложенной записи (writeback).

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

Возможные варианты использования cachestat() приложениями:

  • Планировщик запросов в СУБД сможет решать, выполнять ли сканирование индекса или напрямую читать данные из таблицы, основываясь на состоянии табличного индекса в страничном кэше.
  • Гранулированное и зависимое от нагрузки манипулирование наполнением и вводом-выводом страничного кэша (например "грязных" (dirty) страниц/страниц, помеченных на отложенную запись (writeback)), меняя частоту синхронизации - от очень частой при слабой нагрузке и до пакетной при всплесках нагрузки.
  • Возможность более наглядного и удобного представления информации об использовании памяти в больших файлах/директориях, аналогично тому как утилита "du" позволяет отображать использование дискового пространства.
  • Упрощение диагностики и отладки отложенной записи при проблемах с производительностью.


  1. Главная ссылка к новости (https://www.phoronix.com/news/...)
  2. OpenNews: Релиз ядра Linux 5.0
  3. OpenNews: Атака по определению состояния памяти процессов при помощи страничного кэша
  4. OpenNews: Red Hat развивает новую ФС NVFS, эффективную для NVM-памяти
  5. OpenNews: Уязвимость в ядре Linux, позволяющая исказить файлы, доступные только для чтения
Автор новости: Роман
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/59435-kernel
Ключевые слова: kernel, linux, cachestat
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (45) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, frac (?), 22:01, 13/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    вот на слух похоже на реально нужную штуку.
    ну а если включить обывателя: по больше бы подобных вещей разрабатывали, а не всякие *сты для *стов в ядро внедряли!!!
     
     
  • 2.29, ыы (?), 09:39, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • –4 +/
    каждая такая штука означает расходование процессорного времени и ресурсов.
    Причем острой необходимости в таких штуках как правило нет. Это примерно как ходить круглый год всегда и везде в валенках и с зонтиком. И душ принимать не снимая валенок...
     
     
  • 3.32, Admino (ok), 10:53, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > каждая такая штука означает расходование процессорного времени и ресурсов.

    Если не пользоваться такой штукой, то нет никакого расходования процессорного времени и ресурсов. А если её не собирать при компиляции, то и в памяти она не висит.

    В системе для разработчика оно надо и будет работать, во встройщине её даже компилить не обязательно. Так работает линукс, чувак.

     
     
  • 4.55, gogo (?), 11:30, 29/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вижу, ты до конца статью не дочитал...
    Посмотри, какие там они примеры использования предлагают. Это никак не для разработчиков.
    А штука тежеленная получиться. Потом ее будут годами оптимизировать и баги с утечкой информации фиксить.
     
  • 3.41, Аноним (-), 17:39, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> расходование процессорного времени и ресурсов

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

     
     
  • 4.42, Alladin (?), 05:17, 15/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    кажись вы не знаете о чем говорите
     
  • 3.43, Oe (?), 05:17, 15/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ядро винды не обновляли n-цать лет и оно по прежнему работает идеально.
     
     
  • 4.44, 48 (?), 07:47, 15/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а command.com вдруг перестал работать?
     
     
  • 5.53, Аноним (53), 06:00, 17/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не сижу на этом сайте, мне всё равно
     
  • 4.46, Совершенно другой аноним (?), 10:57, 15/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Ядро винды не обновляли n-цать лет и оно по прежнему работает идеально.

    https://ru.wikipedia.org/wiki/Windows_Display_Driver_Model

    Windows Display Driver Model (WDDM, также WVDDM в эпоху Vista) — это архитектура графических драйверов для видеокарты под управлением Microsoft Windows, начиная с Windows Vista

    - Windows 7 поддерживает WDDM 1.1;
    - Windows 8 включает WDDM 1.2;
    - Windows 8.1 включает WDDM 1.3;
    - Windows 10 включает WDDM 2.0;
    - Windows 10 Anniversary Update (версия 1607) включает WDDM 2.1;
    - Windows 10 Creators Update (версия 1703) включает WDDM 2.2;
    - Windows 10 Fall Creators Update (версия 1709) включает WDDM 2.3;
    - Windows 10 April 2018 Update (версия 1803) включает WDDM 2.4;
    - Windows 10 October 2018 Update (версия 1809) включает в себя поддержку WDDM 2.5;
    - Windows 10 May 2019 Update (версия 1903/1909) добавляет поддержку WDDM 2.6;
    - Windows 10 May 2020 Update (версия 2004) привносит поддержку WDDM 2.7;
    - Первая финальная версия Windows 11 RTM (версия 21H2) включает поддержку WDDM 3.0;
    - Windows 11 версии 22H2 включает поддержку WDDM 3.1;
    - Тестовые сборки Windows 11 Insider Preview 25xxx (версия 23H2) включают WDDM 3.2


     
     
  • 5.48, Аноним (-), 15:36, 15/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Windows Display Driver Model (WDDM, также WVDDM в эпоху Vista) — это
    > архитектура графических драйверов для видеокарты под управлением Microsoft Windows,
    > начиная с Windows Vista

    А файлуха как была тормозом с 90х так и осталась. Поэтому если попробовать ворочать иерархией с 200К файлов как я это в линухе делаю у вас - там одна сплошная "виндус виста", что так что сяк. И вон тот проект в лине билдуется в разы быстрей. Никакие видеодрова этому не помогут.

     
  • 3.47, Аноним (47), 15:33, 15/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > каждая такая штука означает расходование процессорного времени и ресурсов.

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

    Ну и линуксоиды сейчас в лидерах по IOPS на ядро и все такое. Хотите поучить их делать это правильно - делом покажите что можете лучше.

    > Причем острой необходимости в таких штуках как правило нет.

    Намного лучше тыкаться везде как слепому котенку не имея данных о перфомансе системы и затыках.

     

  • 1.2, Олег (??), 22:06, 13/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Да что говорить
    Элементарно загруженность шин посмотреть нельзя,да блин lsi чип хз когда виновник тупняка....все по каким-то левым догадкам
     
  • 1.9, Аноним (9), 22:33, 13/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Хотели бы как лучше, а получится скорее всего очередная дыра для утечек по сторонним каналам
     
     
  • 2.10, Аноним (10), 22:52, 13/07/2023 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Вот ты нытик тоже.
     
     
  • 3.11, Аноним (11), 00:20, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Но капитан же?
     

  • 1.12, Аноним (12), 00:30, 14/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    То есть СУБД будет принимать на основе cachestat решения, которые будут влиять на cachestat. Страничный кеш адаптируется к поведению программы, а теперь и программа будет адаптироваться к состоянию кеша, можем получить положительную обратную связь, так что пользоваться этим нужно очень осторожно.
     
     
  • 2.16, Аноним (16), 04:29, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это стандартная проблема, ей сто лет в обед. Решается так же стандартно - адаптироваться не моментально, а постепенно, чтобы "волны" затухали.
     
     
  • 3.18, Аноним (18), 05:54, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Всё равно будет иногда попадать в резонанс.
     
     
  • 4.24, Аноним (16), 06:57, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Можно рандома ещё добавить
     
     
  • 5.30, ыы (?), 09:41, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    путем отключения этой хрени
     

  • 1.13, Аноним2 (?), 00:38, 14/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот сделали cachestat, все закэшировано, в следующую наносекунду другой файл запросили, все выгрузилось из кэша, а бд уже решила читать файл без индекса, не зная что его не в кэше.
    Как это должно работать? Вероятностно (в надежде что никто кэш активно не вытесняет/вдруг повезёт?)?
     
     
  • 2.14, лох (?), 02:26, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да, в среднем будет работать на x% быстрее. Как те же хардварные префетчеры, например
     
     
  • 3.20, Sw00p aka Jerom (?), 06:13, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А прогрев епта кто будет делать?
     
     
  • 4.49, Аноним (-), 15:38, 15/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не знаю как прогревать "епта" но вообще, софт может и префетчить нужное. И это ессно без статистики не получится нормально делать. Чтобы оптимизить поведение софта - надо знать что уже есть и в правильную ли сторону движение.
     
     
  • 5.50, Sw00p aka Jerom (?), 21:49, 15/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > И это ессно без статистики не получится нормально делать.

    Так статистика это и есть прогрев

     
  • 3.45, Tron is Whistling (?), 10:15, 15/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Да, в среднем будет работать наx быстрее.

    Fixed.

     
  • 2.15, Роман (??), 02:30, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хороший вопрос - мне кажется что вероятностно, но вероятностно оно и сейчас так у того же постгреса - есть коэффициенты на случайный и линейный доступ и есть внутри надежда что данные в page cache. У мускуля менее вероятностный при включенном directio - уповает на собственный buffer pool.
     
     
  • 3.22, Sw00p aka Jerom (?), 06:17, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >У мускуля

    Старый мускуль с отрубленным кверикешем быстрее работает при высоком кешмиссрейте, и жутко, жутко тормозит с включенным :)

     
     
  • 4.23, Роман (??), 06:19, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >>У мускуля
    > Старый мускуль с отрубленным кверикешем быстрее работает при высоком кешмиссрейте, и жутко,
    > жутко тормозит с включенным :)

    Query cache это другое, но ок, у старого мускуля ещё и завязки на myisam/vfs, чтоб хоть как-то можно было привязать к теме.

     
     
  • 5.27, Sw00p aka Jerom (?), 07:55, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Вывод: пользы 0
     
  • 4.34, Аноним (16), 11:21, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В старом мускуле причина тормозов в giant lock на query cache.
     
     
  • 5.35, Sw00p aka Jerom (?), 13:13, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > В старом мускуле причина тормозов в giant lock на query cache.

    угу

     
  • 2.33, Admino (ok), 10:55, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > в следующую наносекунду другой файл запросили, все выгрузилось из кэша

    Такая ситуация возможна только при жёстком OOM, когда всем уже пофиг на твои проблемы с cachestat. В обычной ситуации так не бывает.

     
     
  • 3.51, Sw00p aka Jerom (?), 21:51, 15/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > В обычной ситуации так не бывает.

    :))))))))))  99% ситуаций это на грани ООМ


     

  • 1.17, Аноним (17), 04:43, 14/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Гранулированное и зависимое от нагрузки манипулирование наполнением и вводом-выводом страничного кэша (например "грязных" (dirty) страниц/страниц, помеченных на отложенную запись (writeback)), меняя частоту синхронизации - от очень частой при слабой нагрузке и до пакетной при всплесках нагрузки.

    Т.е.?

     
     
  • 2.19, Илья (??), 05:59, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Компьютер быстрее работать будет
     
     
  • 3.39, Аноним (-), 17:34, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, вспоминаются заставки во премя установки винды. Когда каждая новая "быстрее, выше, сильнее", а на деле прожорливее и тормозее. Если на моем 486DX прекрасно летала 95 винда, то 98 уже свопилась и прилично тормозила, причем в тех же программах.
     

  • 1.26, warlock66613 (ok), 07:50, 14/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Количество системных вызовов стремительно приближается к количеству функций WinAPI. Что-то с этим не так, какая-то проблема в архитектуре ОС.
     
     
  • 2.28, Совершенно другой аноним (?), 08:33, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сравнение, имхо, некорректно. В WinAPI это то, что находится в kernel32.dll, advapi32.dll, user32.dll и gdi32.dll. Т.е. там много всего, вообще не относящегося к ядру ОС, разные там MultiByteToWideChar(), ZeroMemory() и прочее, то, что у Unix-систем располагается в libc. И, соответственно, к числу этих функций количество системных вызовов стремительно приблизиться никак не может. А системных вызовов, наверное, уже примерно столько-же, плюс-минус, сколько системных вызовов в ОС Windows.
     
     
  • 3.31, ыы (?), 09:42, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    надо пасьянс  Косынка сделать системным вызовом...
     
     
  • 4.36, Sw00p aka Jerom (?), 13:15, 14/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > надо пасьянс  Косынка сделать системным вызовом...

    погоду делать надо :) и одним системным вызовом она не испортится

     
  • 3.52, Neon (??), 03:46, 16/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так куда без libc, можно сказать что ядро))). Всё так же приколочено.
     

  • 1.37, benu (ok), 16:20, 14/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Молодцы. Обратная связь в процессе управления — важнейшая вещь.
     
  • 1.54, pavlinux (ok), 13:00, 17/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    "Си-библиотека Cosmopolitan..." только что решила, что она портабельная и тут опять :)))
     

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



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

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