Распределительные ядра процессора между cgroups и внешним миром

oom_adj[118545] является устаревшим и предоставляется только для целей наследия. Внутри Linux используется [118546]oom_score_adj[118547], который имеет больший диапазон: [118548]oom_adj[118549] увеличивается до 15, в то время как [118550]oom_score_adj[118551] увеличивается до 1000.

Всякий раз, когда вы пишете на [118552]oom_adj[118553] (допустим, 9), ядро делает так:

и сохраняет это на [118554]oom_score_adj[118555]. [118556]OOM_SCORE_ADJ_MAX[118557] равно 1000 и [118558]OOM_DISABLE[118559] равно -17.

Так что за 9 вы получите [118560]oom_adj=(9 * 1000) / 17 ~= 529. 411[118561] и так как эти значения являются целыми числами, [118562]oom_score_adj[118563] будет содержать 529.

Теперь при чтении [118564]oom_adj[118565] ядро сделает так:

Так что за 529 получится: [118566]oom_adj = (529 * 17) / 1000 = 8.993[118567] и так как ядро использует целые числа и целочисленную арифметику, то это станет 8.

netsh interface ipv6 show address level=verbose

Так что там... вы пишете 9 и получаете 8 из-за арифметики с фиксированной точкой/целым числом.[118175].

2
18.03.2015, 18:10
1 ответ

Эти два варианта могут быть использованы для ограничения количества ядер процессора, доступных для группы cgroup:

cpu.cfs_period_us
cpu.cfs_quota_us

cfs_period_us определяет, как часто это должно выполняться cfs_quota_us определяет, сколько us должно быть получено сгруппой в течение каждого периода. Таким образом, если указать cfs_quota_us как N умноженное на количество cfs_period_us, то cgroup получит N ядер.

0
27.01.2020, 22:55

Теги

Похожие вопросы