LINUX.ORG.RU
ФорумTalks

Защищаем чистый кэш файлов при нехватке памяти для предотвращения пробуксовки и livelock

 , , ,


4

3

Во-первых, вышла новая линейка для этой самой защиты: https://github.com/hakavlad/le9-patch/tree/main/le9db_patches.

В описании патчей все написано.

Спрашивайте ответы, если еще остались вопросы.

★★★

Последнее исправление: hakavlad (всего исправлений: 2)
Ответ на: комментарий от post-factum

Я лишь предлагаю опираться на опыт и зравый смысл: если экспериментально dirty превысил rec максимум на четверть МБ - то так и запишем: погрешность вычисления клин составляет четверть метра.

Если клин у нас уходит в минус - значит, likely, clean в системе меньше метра.

hakavlad ★★★
() автор топика
Ответ на: комментарий от hakavlad

Слишком много допущений. Я думаю, что сделаю soft limit в этом случае как средний и безопасный вариант.

post-factum ★★★★★
()
Ответ на: комментарий от post-factum

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

cobold ★★★★★
()

Таковы показатели давления io и mem при сбросе грязи под стрессом:

$ psi2log
Starting psi2log, target: SYSTEM_WIDE, mode: 0, interval: 2 sec, log file is not set, suppress output: False
PSI source dir: /proc/pressure/, source files: cpu, io, memory
Process memory locked with MCL_CURRENT | MCL_FUTURE | MCL_ONFAULT
===============================================================================
     cpu      ||               io              ||            memory
============= || ============================= || =============================
     some     ||      some     |      full     ||      some     |       full
------------- || ------------- | ------------- || ------------- | -------------
 avg10  avg60 ||  avg10  avg60 |  avg10  avg60 ||  avg10  avg60 |  avg10  avg60
------ ------ || ------ ------ | ------ ------ || ------ ------ | ------ ------
  0.00   0.01 ||  47.75  42.97 |  45.87  40.66 ||   0.20   2.45 |   0.19   2.22
  0.00   0.01 ||  46.53  42.91 |  44.44  40.58 ||   0.16   2.37 |   0.15   2.14
  0.00   0.01 ||  45.52  42.85 |  43.64  40.56 ||   0.13   2.29 |   0.12   2.07
  0.00   0.01 ||  45.07  42.85 |  43.16  40.57 ||   0.11   2.22 |   0.10   2.01
  0.00   0.01 ||  45.42  42.99 |  43.67  40.75 ||   0.09   2.14 |   0.08   1.94
  0.00   0.01 ||  45.88  43.15 |  44.45  40.99 ||   0.07   2.07 |   0.06   1.88
  0.00   0.01 ||  47.72  43.57 |  45.64  41.31 ||   0.06   2.01 |   0.05   1.81
  0.00   0.01 ||  49.03  43.94 |  46.61  41.63 ||   0.05   1.94 |   0.04   1.75
  0.00   0.01 ||  47.58  43.85 |  44.32  41.38 ||   0.40   1.94 |   0.21   1.73
  0.00   0.01 ||  50.91  44.57 |  48.07  42.15 ||   2.86   2.34 |   2.53   2.10
  0.00   0.01 ||  51.11  44.82 |  48.24  42.38 ||   3.25   2.42 |   2.80   2.16
  0.00   0.01 ||  53.63  45.48 |  51.27  43.12 ||   2.66   2.34 |   2.29   2.09
  0.00   0.01 ||  55.50  46.08 |  53.58  43.80 ||   2.18   2.27 |   1.87   2.02
  0.00   0.01 ||  54.33  46.18 |  52.57  43.94 ||   1.78   2.19 |   1.53   1.95
  0.00   0.01 ||  54.81  46.53 |  53.37  44.37 ||   1.46   2.12 |   1.25   1.89
  0.00   0.00 ||  52.49  46.38 |  50.04  44.06 ||   1.19   2.05 |   1.03   1.83
  0.00   0.00 ||  53.12  46.70 |  50.76  44.38 ||   2.06   2.18 |   1.74   1.93
  0.00   0.00 ||  54.91  47.23 |  52.79  44.96 ||   4.59   2.63 |   4.14   2.36
  0.00   0.00 ||  56.38  47.75 |  54.46  45.52 ||   5.57   2.87 |   5.02   2.58
  0.00   0.00 ||  54.50  47.69 |  52.75  45.50 ||   4.56   2.78 |   4.11   2.49
  0.00   0.00 ||  53.32  47.70 |  51.52  45.52 ||   3.73   2.69 |   3.37   2.41
  0.00   0.00 ||  53.44  47.91 |  51.61  45.73 ||   3.05   2.60 |   2.76   2.33
  0.00   0.00 ||  57.16  48.76 |  55.12  46.56 ||   2.50   2.51 |   2.26   2.25
  0.00   0.00 ||  57.32  49.06 |  55.10  46.83 ||   2.05   2.43 |   1.85   2.18
  0.00   0.00 ||  57.08  49.29 |  54.90  47.07 ||   1.67   2.35 |   1.51   2.11
  0.00   0.00 ||  59.24  49.93 |  56.36  47.59 ||   1.37   2.27 |   1.24   2.04
  0.00   0.00 ||  59.92  50.36 |  55.93  47.80 ||   1.12   2.20 |   1.01   1.97
  0.00   0.00 ||  60.84  50.84 |  55.76  48.03 ||   0.92   2.13 |   0.83   1.91
  0.00   0.00 ||  61.77  51.34 |  57.62  48.62 ||   0.75   2.06 |   0.68   1.84
  0.00   0.00 ||  61.09  51.56 |  57.50  48.90 ||   0.61   1.99 |   0.55   1.78
  0.00   0.00 ||  62.70  52.16 |  58.86  49.42 ||   0.50   1.92 |   0.45   1.72
  0.00   0.00 ||  62.39  52.45 |  58.34  49.64 ||   0.41   1.86 |   0.37   1.67
  0.00   0.00 ||  64.13  53.09 |  58.82  50.01 ||   0.33   1.80 |   0.30   1.61
  0.18   0.03 ||  61.21  52.92 |  56.50  49.88 ||   0.27   1.74 |   0.24   1.56
  0.14   0.03 ||  63.34  53.58 |  57.31  50.24 ||   0.22   1.68 |   0.20   1.51
  0.12   0.03 ||  61.29  53.53 |  55.81  50.20 ||   0.18   1.63 |   0.16   1.46
  0.09   0.02 ||  60.33  53.61 |  51.85  49.67 ||   6.49   2.72 |   4.66   2.23 
-- Начало стресса. Во время копирования на флэшку запущен `/tail/dev/zero`
  0.26   0.06 ||  59.00  53.59 |  46.99  48.86 ||  19.80   5.25 |  17.22   4.58
  5.46   1.00 ||  54.83  53.01 |  41.01  47.72 ||  33.24   8.15 |  30.04   7.31
 15.70   3.00 ||  53.96  52.91 |  35.03  46.42 ||  44.97  11.09 |  41.08  10.04
 17.57   3.75 ||  50.34  52.29 |  29.95  45.13 ||  54.58  13.93 |  50.31  12.73
 23.62   5.30 ||  46.29  51.50 |  24.89  43.72 ||  62.63  16.72 |  58.22  15.39
 32.39   7.48 ||  43.34  50.79 |  20.74  42.36 ||  69.21  19.41 |  64.34  17.89
 39.02   9.49 ||  41.83  50.28 |  17.16  41.00 ||  74.61  22.01 |  69.35  20.32
 45.17  11.57 ||  40.41  49.74 |  14.05  39.66 ||  79.03  24.53 |  73.63  22.69
 50.03  13.55 ||  39.43  49.26 |  11.87  38.43 ||  82.64  26.97 |  77.50  25.06
 56.00  15.82 ||  36.27  48.37 |   9.72  37.17 ||  85.61  29.32 |  80.49  27.31
 62.34  18.28 ||  33.50  47.47 |   7.96  35.95 ||  88.03  31.60 |  82.94  29.50
 67.35  20.62 ||  31.60  46.67 |   6.51  34.78 ||  90.02  33.81 |  84.94  31.61
 68.37  22.34 ||  32.03  46.26 |   5.33  33.64 ||  91.65  35.94 |  86.40  33.62
 72.84  24.65 ||  31.48  45.69 |   4.37  32.54 ||  92.98  38.00 |  87.78  35.59
 73.59  26.36 ||  30.85  45.11 |   3.94  31.54 ||  94.07  40.00 |  88.72  37.47
 76.74  28.48 ||  28.16  44.16 |   3.22  30.51 ||  94.96  41.93 |  89.68  39.32
 78.96  30.46 ||  28.13  43.63 |   2.64  29.51 ||  95.69  43.80 |  90.46  41.11
 81.14  32.44 ||  26.11  42.76 |   2.16  28.54 ||  96.29  45.60 |  91.10  42.84
 81.12  34.03 ||  24.46  41.92 |   1.77  27.61 ||  96.78  47.35 |  91.62  44.51
 75.84  34.62 ||  24.19  41.30 |   1.81  26.77 ||  97.18  49.04 |  91.87  46.10
 70.61  35.02 ||  22.71  40.47 |   1.84  25.96 ||  97.33  50.64 |  92.08  47.63
 68.33  35.77 ||  22.40  39.83 |   1.69  25.14 ||  97.63  52.22 |  92.24  49.12
 66.82  36.56 ||  21.42  39.08 |   1.74  24.38 ||  97.88  53.75 |  92.38  50.55
 65.76  37.36 ||  21.16  38.46 |   1.61  23.62 ||  98.08  55.23 |  92.67  51.97
 63.27  37.84 ||  21.13  37.89 |   1.68  22.91 ||  98.25  56.67 |  92.91  53.35
 63.04  38.63 ||  20.20  37.17 |   1.37  22.16 ||  98.38  58.05 |  93.11  54.68
 62.12  39.27 ||  21.25  36.81 |   1.12  21.44 ||  98.49  59.39 |  93.63  56.03
 59.38  39.52 ||  21.20  36.29 |   1.10  20.77 ||  98.58  60.69 |  93.88  57.31
 58.59  40.03 ||  21.89  35.92 |   1.26  20.15 ||  98.66  61.94 |  94.08  58.54
 57.94  40.52 ||  22.82  35.63 |   1.03  19.49 ||  98.72  63.15 |  94.25  59.73
 57.22  40.96 ||  25.20  35.64 |   1.93  19.05 ||  98.59  64.29 |  94.02  60.82
 60.26  42.04 ||  27.34  35.68 |   1.94  18.49 ||  98.66  65.43 |  94.20  61.94
 63.47  43.22 ||  28.00  35.53 |   1.59  17.89 ||  98.72  66.53 |  94.16  62.99
 64.84  44.12 ||  27.82  35.25 |   1.30  17.30 ||  98.77  67.59 |  94.13  64.00
 64.14  44.68 ||  28.21  35.08 |   1.06  16.74 ||  98.81  68.62 |  94.11  64.98 

Давление памяти огромное, гуй мёртв, но киллер не приходит. Это будет длиться очень долго - пока не сбросятся гигабайты грязи (скорость записи - 8 M/s). Можно возспроизвести и наоборот - при нехватке памяти начать копирование. При этом грязные страницы вытеснят чистые, и получим похожую картину. В тред приглашаются 12309-диссиденты.

hakavlad ★★★
() автор топика
Ответ на: комментарий от post-factum

Патченное, но с нулевой защитой.

Жеский резерв 1 МБ (vm.clean_min_kbytes = 1024) радикально меняет картину: киллер приходит быстро (но не так мгновенно, как если бы не шла запись), не дожидаясь окончания сброса грязи.

Меньшие значения (напр vm.clean_min_kbytes = 500) жесткого резерва при этом недостаточны для ускорения прихода киллера.

hakavlad ★★★
() автор топика
Ответ на: комментарий от post-factum

Кстати, с ядром 4.9 картина вообще другая - при наличии свопа на zram и запуске tail /dev/zero своп практически не заполняется, и сохраняется резерв чистых - метров двестии - этого хватает для жизни гуя - можно запускать эмуляторы терминала. Идет сброс грязи, система очень медленная, чистые есть, при этом своп не заполняется во время сброса. - Опыт с ванилью на Deb 9.

hakavlad ★★★
() автор топика
Последнее исправление: hakavlad (всего исправлений: 3)
Ответ на: комментарий от chaos_dremel

Их выбрасывает (записывает на диск) ядро при нехватке памяти, например.

hakavlad ★★★
() автор топика
Ответ на: комментарий от darkenshvein

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

А так-то да, ничего сложного в сборке своего ведра нет.

DawnCaster ★★
()
Ответ на: комментарий от post-factum

clean — не ресурс, у него нет дефицита по определению

Откуда инфа?

У чистых может быть дефицит, выражающийся в заморозке системы.

Система с 10М чистых - это почти мёртвая система.

2М файловых - это уже околоООМ. С 10М система может жить под высоким давлением, и киллер может не приходить. С чистыми выше ста-двухсот имеем практически здоровую систему с нормальным давлением.

Вот новый инструмент для анализа влияния объема файловых на давление и приход киллера: https://github.com/hakavlad/file-starve

Написанное выше подтверждается с помощью этого и инструмента.

Скрипт позволяет в течение заданного времени балансировать около заданного объема файл кэша.

Например, указываем цель 20М файоловых. Скрипт наращивает свою анонимку пока не достигает цели. Далее при необходимости сбрасывает былламт, что уровень файловых не падал ниже заданного.

Анализировать результат можно с помощью https://github.com/hakavlad/mem2log и psi2log.

hakavlad ★★★
() автор топика
Ответ на: комментарий от hakavlad

Например, запускаем file-starve -t 15 (балансировать на уровне 15М файлов в течение минуты, это дефолт). Вывод:

$ file-starve -t 15
Starting file-starve
  target file cache size:             15.0 MiB
  timeout after reaching the target:  60.0 sec
  MemFree scale factor:               1.5
  chunk size:                         16 KiB
Определяемый пользователем сигнал 1

Если все ОК, то file-starve завершает себя по SIGUSR1.

Что при этом происходило?

Вывод mem2log:

$ mem2log
Starting mem2log with interval 2s, mode: 1
Process memory locked with MCL_CURRENT | MCL_FUTURE | MCL_ONFAULT
All values are in mebibytes
MemTotal: 9788.1, SwapTotal: 0.0
--
MA is MemAvailable, MF is MemFree, A is Anon
F is File, AF is Active(file), IF is Inactive(file)
D is Dirty, C is Clean file (File - Dirty), SF is SwapFree
--
MA=7716=79% MF=7221 A=1538 F=700 AF=425 IF=275 D=0 C=700 SF=0=0%
MA=7710=79% MF=7215 A=1538 F=700 AF=425 IF=274 D=0 C=700 SF=0=0%
MA=7584=77% MF=7090 A=1663 F=700 AF=425 IF=274 D=0 C=700 SF=0=0%
MA=6569=67% MF=6074 A=2676 F=700 AF=425 IF=274 D=0 C=700 SF=0=0%
MA=5555=57% MF=5061 A=3688 F=700 AF=425 IF=274 D=0 C=700 SF=0=0%
MA=4546=46% MF=4051 A=4696 F=700 AF=425 IF=274 D=0 C=700 SF=0=0%
MA=3532=36% MF=3038 A=5706 F=700 AF=425 IF=274 D=0 C=700 SF=0=0%
MA=2526=26% MF=2032 A=6710 F=700 AF=425 IF=274 D=0 C=700 SF=0=0%
MA=1527=16% MF=1032 A=7707 F=700 AF=425 IF=274 D=0 C=700 SF=0=0%
MA=529=5% MF=136 A=8705 F=600 AF=365 IF=235 D=0 C=600 SF=0=0%
MA=63=1% MF=187 A=9259 F=12 AF=6 IF=6 D=0 C=12 SF=0=0%
MA=62=1% MF=186 A=9259 F=15 AF=8 IF=7 D=0 C=15 SF=0=0%
MA=47=0% MF=172 A=9274 F=11 AF=6 IF=5 D=0 C=11 SF=0=0%
MA=61=1% MF=185 A=9259 F=13 AF=5 IF=8 D=0 C=13 SF=0=0%
MA=62=1% MF=186 A=9260 F=13 AF=7 IF=6 D=0 C=13 SF=0=0%
MA=62=1% MF=186 A=9259 F=14 AF=6 IF=8 D=0 C=14 SF=0=0%
MA=50=1% MF=173 A=9271 F=15 AF=7 IF=9 D=0 C=15 SF=0=0%
MA=62=1% MF=186 A=9258 F=15 AF=7 IF=8 D=0 C=15 SF=0=0%
MA=61=1% MF=186 A=9261 F=13 AF=6 IF=7 D=0 C=13 SF=0=0%
MA=61=1% MF=186 A=9261 F=12 AF=7 IF=6 D=0 C=12 SF=0=0%
MA=61=1% MF=186 A=9261 F=12 AF=6 IF=6 D=0 C=12 SF=0=0%
MA=61=1% MF=186 A=9261 F=12 AF=7 IF=5 D=0 C=12 SF=0=0%
MA=20=0% MF=146 A=9302 F=11 AF=5 IF=6 D=0 C=11 SF=0=0%
MA=60=1% MF=186 A=9261 F=11 AF=4 IF=7 D=0 C=11 SF=0=0%
MA=36=0% MF=162 A=9285 F=10 AF=5 IF=5 D=0 C=10 SF=0=0%
MA=42=0% MF=167 A=9281 F=11 AF=7 IF=4 D=0 C=11 SF=0=0%
MA=61=1% MF=186 A=9261 F=13 AF=7 IF=6 D=0 C=13 SF=0=0%
MA=61=1% MF=185 A=9260 F=14 AF=7 IF=7 D=0 C=14 SF=0=0%
MA=42=0% MF=167 A=9281 F=12 AF=7 IF=6 D=0 C=12 SF=0=0%
MA=62=1% MF=185 A=9260 F=15 AF=5 IF=10 D=0 C=15 SF=0=0%
MA=16=0% MF=139 A=9304 F=16 AF=4 IF=12 D=0 C=16 SF=0=0%
MA=61=1% MF=185 A=9262 F=13 AF=6 IF=7 D=0 C=13 SF=0=0%
MA=61=1% MF=185 A=9260 F=14 AF=7 IF=6 D=0 C=14 SF=0=0%
MA=61=1% MF=185 A=9260 F=14 AF=6 IF=8 D=0 C=14 SF=0=0%
MA=3=0% MF=127 A=9320 F=15 AF=7 IF=8 D=0 C=15 SF=0=0%
MA=60=1% MF=185 A=9264 F=10 AF=5 IF=5 D=0 C=10 SF=0=0%
MA=6=0% MF=129 A=9316 F=16 AF=7 IF=9 D=0 C=16 SF=0=0%
MA=12=0% MF=135 A=9307 F=16 AF=6 IF=10 D=0 C=16 SF=0=0%
MA=58=1% MF=182 A=9264 F=13 AF=5 IF=8 D=0 C=13 SF=0=0%
MA=61=1% MF=185 A=9260 F=14 AF=4 IF=9 D=0 C=14 SF=0=0%
MA=7794=80% MF=7915 A=1537 F=20 AF=5 IF=16 D=0 C=20 SF=0=0%
MA=7784=80% MF=7894 A=1537 F=41 AF=6 IF=36 D=0 C=41 SF=0=0%
MA=7774=79% MF=7874 A=1537 F=61 AF=6 IF=55 D=0 C=61 SF=0=0%
MA=7766=79% MF=7859 A=1538 F=76 AF=9 IF=67 D=0 C=76 SF=0=0%
MA=7757=79% MF=7841 A=1537 F=94 AF=11 IF=83 D=0 C=94 SF=0=0%
MA=7731=79% MF=7809 A=1538 F=106 AF=12 IF=94 D=0 C=105 SF=0=0%
MA=7736=79% MF=7811 A=1538 F=113 AF=16 IF=97 D=0 C=112 SF=0=0%
MA=7734=79% MF=7806 A=1537 F=117 AF=20 IF=97 D=0 C=117 SF=0=0%
MA=7733=79% MF=7803 A=1537 F=120 AF=20 IF=101 D=0 C=120 SF=0=0%
MA=7730=79% MF=7800 A=1537 F=122 AF=20 IF=102 D=0 C=122 SF=0=0%
^C--
Got the SIGINT signal
Peak values:
  MA:  min 3.45, max 7794.0
  MF:  min 126.93, max 7914.71
  A:   min 1537.14, max 9320.04
  F:   min 10.26, max 699.96
  AF:  min 4.28, max 425.45
  IF:  min 4.0, max 275.14
  D:   min 0.0, max 0.37
  C:   min 10.26, max 699.96
  SF:  min 0.0, max 0.0
Exit.
hakavlad ★★★
() автор топика
Ответ на: комментарий от hakavlad

И вывод psi2log:

$ psi2log 
Starting psi2log, target: SYSTEM_WIDE, mode: 0, interval: 2 sec, log file is not set, suppress output: False
PSI source dir: /proc/pressure/, source files: cpu, io, memory
Process memory locked with MCL_CURRENT | MCL_FUTURE | MCL_ONFAULT
===============================================================================
     cpu      ||               io              ||            memory
============= || ============================= || =============================
     some     ||      some     |      full     ||      some     |       full
------------- || ------------- | ------------- || ------------- | -------------
 avg10  avg60 ||  avg10  avg60 |  avg10  avg60 ||  avg10  avg60 |  avg10  avg60
------ ------ || ------ ------ | ------ ------ || ------ ------ | ------ ------
  0.02   0.11 ||   0.73   0.28 |   0.73   0.27 ||   0.00   0.00 |   0.00   0.00
  0.01   0.11 ||   2.22   0.56 |   2.04   0.53 ||   0.00   0.00 |   0.00   0.00
  0.01   0.10 ||   1.82   0.54 |   1.67   0.51 ||   0.00   0.00 |   0.00   0.00
  0.01   0.10 ||   1.49   0.52 |   1.37   0.49 ||   0.00   0.00 |   0.00   0.00
  0.00   0.10 ||   1.22   0.51 |   1.12   0.48 ||   0.00   0.00 |   0.00   0.00
  0.00   0.09 ||   1.00   0.49 |   0.91   0.46 ||   0.00   0.00 |   0.00   0.00
  0.00   0.09 ||   0.82   0.47 |   0.75   0.44 ||   0.00   0.00 |   0.00   0.00
  0.00   0.09 ||   0.67   0.46 |   0.61   0.43 ||   0.00   0.00 |   0.00   0.00
  0.00   0.08 ||   0.54   0.44 |   0.50   0.41 ||   0.00   0.00 |   0.00   0.00
  0.00   0.08 ||   0.44   0.43 |   0.41   0.40 ||   0.00   0.00 |   0.00   0.00
  0.00   0.08 ||   0.36   0.41 |   0.33   0.39 ||   0.90   0.16 |   0.54   0.09
  0.00   0.07 ||   6.82   1.58 |   6.61   1.52 ||   3.64   0.68 |   3.34   0.61
  0.00   0.07 ||  19.35   4.01 |  18.82   3.89 ||   8.59   1.67 |   8.35   1.61
  0.00   0.07 ||  31.06   6.63 |  30.26   6.45 ||  13.19   2.73 |  13.00   2.67
  0.00   0.07 ||  40.47   9.13 |  39.45   8.88 ||  13.52   3.13 |  13.36   3.07
  0.00   0.06 ||  48.17  11.54 |  46.44  11.15 ||  15.78   3.88 |  15.47   3.79
  0.00   0.06 ||  53.21  13.65 |  51.43  13.20 ||  19.44   4.93 |  19.00   4.81
  0.00   0.06 ||  58.79  15.95 |  56.97  15.45 ||  23.17   6.08 |  22.81   5.96
  0.00   0.06 ||  64.44  18.38 |  61.86  17.70 ||  20.24   6.11 |  19.76   5.96
  0.00   0.05 ||  67.44  20.43 |  64.97  19.70 ||  20.56   6.63 |  20.17   6.49
  0.00   0.05 ||  69.90  22.41 |  67.51  21.64 ||  25.89   8.04 |  25.57   7.91
  0.00   0.05 ||  72.81  24.49 |  70.68  23.71 ||  28.08   9.02 |  27.82   8.89
  0.00   0.05 ||  73.93  26.27 |  71.64  25.42 ||  27.34   9.51 |  26.95   9.36
  0.00   0.05 ||  73.58  27.77 |  71.52  26.92 ||  26.19   9.89 |  25.69   9.70
  0.00   0.04 ||  74.20  29.38 |  72.15  28.49 ||  25.97  10.39 |  25.56  10.20
  0.00   0.04 ||  76.88  31.33 |  73.75  30.21 ||  27.61  11.19 |  27.09  10.98
  0.00   0.04 ||  77.45  32.92 |  74.52  31.77 ||  29.49  12.07 |  28.88  11.83
  0.00   0.04 ||  80.44  34.92 |  76.06  33.45 ||  31.58  13.01 |  31.08  12.79
  0.00   0.04 ||  82.36  36.75 |  76.95  35.00 ||  32.01  13.70 |  31.43  13.45
  0.00   0.04 ||  82.65  38.30 |  76.96  36.38 ||  32.74  14.43 |  32.07  14.15
  0.00   0.03 ||  82.35  39.70 |  77.33  37.77 ||  32.96  15.07 |  32.42  14.80
  0.00   0.03 ||  82.65  41.15 |  77.09  39.02 ||  31.88  15.46 |  31.44  15.20
  0.00   0.03 ||  81.81  42.35 |  77.07  40.26 ||  30.82  15.81 |  30.45  15.56
  0.00   0.03 ||  81.48  43.58 |  77.42  41.53 ||  31.39  16.40 |  31.09  16.16
  0.00   0.03 ||  80.67  44.68 |  76.98  42.63 ||  30.05  16.65 |  29.81  16.42
  0.00   0.03 ||  80.54  45.83 |  77.16  43.78 ||  31.49  17.35 |  31.11  17.09
  0.00   0.02 ||  81.89  47.21 |  78.58  45.13 ||  30.50  17.63 |  30.18  17.38
  0.00   0.02 ||  82.64  48.48 |  79.38  46.37 ||  32.76  18.46 |  32.50  18.22
  0.00   0.02 ||  82.70  49.61 |  78.59  47.31 ||  31.35  18.67 |  31.14  18.44
  0.00   0.02 ||  83.48  50.83 |  79.75  48.54 ||  31.11  19.05 |  30.94  18.82
  0.00   0.02 ||  84.30  52.05 |  80.16  49.64 ||  29.46  19.14 |  28.95  18.86
  0.00   0.02 ||  86.42  53.49 |  82.84  51.12 ||  30.28  19.63 |  29.87  19.35
  0.00   0.02 ||  87.61  54.78 |  84.32  52.42 ||  25.70  19.15 |  25.36  18.88
  0.00   0.02 ||  87.32  55.80 |  84.26  53.46 ||  21.22  18.56 |  20.95  18.30
  0.00   0.02 ||  85.27  56.46 |  82.40  54.13 ||  17.56  17.98 |  17.33  17.73
  0.00   0.02 ||  82.50  56.91 |  79.79  54.58 ||  14.74  17.46 |  14.55  17.22
  0.00   0.02 ||  71.00  55.66 |  68.78  53.42 ||  12.07  16.89 |  11.92  16.65
  0.00   0.01 ||  61.58  54.47 |  59.58  52.26 ||   9.88  16.33 |   9.76  16.11
  0.00   0.01 ||  50.42  52.68 |  48.78  50.55 ||   8.09  15.80 |   7.99  15.58
  0.00   0.01 ||  44.73  51.58 |  43.21  49.48 ||   6.62  15.28 |   6.54  15.07
  0.00   0.01 ||  36.62  49.89 |  35.38  47.87 ||   5.42  14.78 |   5.35  14.58
^C
=================================
Peak values:  avg10  avg60 avg300
-----------  ------ ------ ------
some cpu       0.02   0.11   0.07
-----------  ------ ------ ------
some io       87.61  56.91  17.88
full io       84.32  54.58  17.13
-----------  ------ ------ ------
some memory   32.96  19.63   5.81
full memory   32.50  19.35   5.72

При использовании prelockd и блоке либ давление в аналогичной ситуации не растет, что подтверждает выводы о влиянии вытеснения кэша библиотек на давление io и отзывчивость гуя при нехватке памяти.

hakavlad ★★★
() автор топика
Ответ на: комментарий от hakavlad

При это размер min_free_kbytes и watermark_scale_factor не влияют на возможность сохранения файловых страниц при нулевом SwapFree.

hakavlad ★★★
() автор топика
Ответ на: комментарий от post-factum

лучше бы ты сам потестил на своих нагрузках все три варианта

Не нашел разницы между 0 и ULONG_MAX. Примерно одинаково работают. Оставлю 0.

hakavlad ★★★
() автор топика
Ответ на: комментарий от hakavlad

Откуда инфа?

Ресурс — это что-то, что имеет конечный/заранее известный объём. Мы не знаем количество выброшенных страниц после начала reclaim’а, и не можем знать, т.к. мы не знаем, когда начался reclaim, и что происходило во время предыдущего reclaim’а.

post-factum ★★★★★
()
Ответ на: комментарий от post-factum

Возможна ли реализация LRU отдельно для чистых и грязных? Выглядит абсурдно смешение всего в кучу.

hakavlad ★★★
() автор топика

Если я усну и проснусь через сто лет и меня спросят, что сейчас делают линуксоиды я отвечу: пишут оом киллер.

cocucka ★★★★☆
()
Ответ на: комментарий от post-factum

https://pastebin.com/b8cMTpY4 - kernel: BUG: unable to handle page fault все еще возможен с le9db, но только при использовании zram с большим disksize и когда практически обнуляется анонимка при почти полном ее вытеснении в своп.

В других случаях воспроизвести BUG не удается. В худшем случае бывает Fatal IO error.

Установка vm.anon_min_kbytes=300000 предотвращала BUG (опыт был с загрузкой с mem=4G). Патч: https://pastebin.com/YVTY26hE

Напоминаю, что с pf воспроизводился BUG даже при обычном своппиге, хотя и не с дефолтами.

hakavlad ★★★
() автор топика
Ответ на: комментарий от post-factum

Вопрос такой: деление на поколения LRU не мешает вычислять Active и Inactive и вычислять clean? Меняется ли meminfo с патчем?

на форуме xanmod предложен le9, у юзера положительный опыт https://forum.xanmod.org/thread-4102.html?highlight=le9+patch

https://github.com/zen-kernel/zen-kernel/issues/207 linux-zen еще думает о multi-generational LRU

hakavlad ★★★
() автор топика
Ответ на: комментарий от hakavlad

Ещё рано для апстрима, но тестить сейчас ничего не мешает.

post-factum ★★★★★
()
Ответ на: комментарий от post-factum
  CC [M]  drivers/iio/pressure/zpa2326_i2c.o
  CC [M]  drivers/iio/pressure/zpa2326_spi.o
  CC [M]  drivers/iio/pressure/st_pressure_i2c.o
  CC [M]  drivers/iio/pressure/st_pressure_spi.o
  LD [M]  drivers/iio/pressure/bmp280.o
  LD [M]  drivers/iio/pressure/st_pressure.o
Makefile:1854: ошибка выполнения рецепта для цели «drivers»
make: *** [drivers] Ошибка 2

не собралось(

hakavlad ★★★
() автор топика
Ответ на: комментарий от post-factum

В xanmod завезли le9 и multigen. Накатил бинарь.

I tested 5.12.3-xanmod1.

I found these default values:

vm.clean_low_kbytes = 262144 vm.clean_min_kbytes = 0

I found that it does not work. Seems like the patch doesn’t work. I do not know what the problem is: protection is simply not working with this kernel.

Такие дела.

hakavlad ★★★
() автор топика
Ответ на: комментарий от hakavlad

Refinement: hard protection works well without swap space.

With swap space it has no effect.

hakavlad ★★★
() автор топика
Ответ на: комментарий от post-factum

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

hakavlad ★★★
() автор топика
Ответ на: комментарий от post-factum

а разгадка проста:

static void prepare_scan_count(pg_data_t *pgdat, struct scan_control *sc)
{
	unsigned long file;
	struct lruvec *target_lruvec;

	/* the multigenerational lru doesn't use these counters */
	if (lru_gen_enabled())
		return;

le9 нужно переделывать, текущие версии не годятся.

hakavlad ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.