Внутренности Linux - КИТ 2024
HTML-код
- Опубликовано: 23 июн 2024
- Спикер: Андрей Мичурин, руководитель группы разработки компонентов Деплоя
Рассмотрим, как работают планировщик процессов и подсистема виртуальной памяти. Проговорим, для чего нужны прерывания. И узнаем, что такое cgroup и namespace.
Спасибо за просмотр и интерес к технологиям.
Хочу отметить, что в данной лекции я допустил несколько неточностей, ошибок и опечаток.
* 17:02 clone() будет видно, если трейсить bash из которого я запускаю strace
* 25:01 обрабатывать нельзя только kill
* 42:49 Stopped обозначается T
* 44:33 Terminated обозначается X
* 40:54 LA учитывает не только R, но процессы с D стейтом.
* 2:44:21 utc namespace - про имя хоста
Будьте внимательны!
Спасибо за очень интересную лекцию!
17:02 немного тут Вас не понял - "этот вызов имел под собой и fork и exec" - мы запускаем strace, который также создаёт child процесс. Чтобы увидеть желаемый вызов нужно запустить второй bash (в соседнем pty, например), в котором запустить strace c аттачем по pid на первый баш (strace -p $PID) - то системный вызов (clone, все же это Linux) будет видно.
Очень крутое замечание!
Без clone() никуда, действительно надо стрейсить баш из которого вызываем, что бы поймать clone()!
Тут главная мысль, что все пишут про fork() && exec(), а по факту, мы видим другое clone && execve.
40:54 LA - это не количество процессов, исполняющихся на CPU (в состоянии Running). Это отношение всех процессов (с состояниями R и D) к имеющимся ресурсам CPU
Спасибо !
Я это подсветил в своем комментарии выше. Ошибки опечатки и неточности описываю там .
Будто Роберта Лава перечитал. Конечно поверхностно, но для студентов наверно глубже пока и не надо
Я в лекции прям явно упоминал, что это краткий пересказ Роберта Лава, в моей интерпретации и с моими ошибками. Спасибо за просмотр.
2:02:56 где-нибудь тут можно было упомянуть про TLB, наверно про него и был вопрос (косвенно, если я верно понял..)
Нельзя так нагло обманывать неокрепшие умы детей про load average.
Когда в Linux впервые появились средние значения нагрузки, они отражали только потребность в ресурсах процессора, как и в других ОС. Но позднее они претерпели изменения, в них включили не только выполняемые задачи, но и те, что находятся в непрерываемом состоянии (TASK_UNINTERRUPTIBLE или nr_uninterruptible). Это состояние используется ветвями кода, которые хотят избежать прерывания по сигналам, в том числе задачами, блокированными дисковым вводом/выводом, и некоторыми блокировками. Вы могли уже сталкиваться с этим состоянием: оно отображается как состояние "D" в выходных данных ps и top. На странице ps(1) его называют «uninterruptible sleep (usually IO)».
Спасибо за уточнение!
Действительно, похоже сейчас это так работает.