Внутренности Linux - КИТ 2024

Поделиться
HTML-код
  • Опубликовано: 23 июн 2024
  • Спикер: Андрей Мичурин, руководитель группы разработки компонентов Деплоя
    Рассмотрим, как работают планировщик процессов и подсистема виртуальной памяти. Проговорим, для чего нужны прерывания. И узнаем, что такое cgroup и namespace.

Комментарии • 11

  • @michurinandrey
    @michurinandrey 3 дня назад +5

    Спасибо за просмотр и интерес к технологиям.
    Хочу отметить, что в данной лекции я допустил несколько неточностей, ошибок и опечаток.
    * 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 - про имя хоста
    Будьте внимательны!

  • @user-yo8wm5bd6z
    @user-yo8wm5bd6z 6 дней назад

    Спасибо за очень интересную лекцию!

  • @ep4sh
    @ep4sh 4 дня назад

    17:02 немного тут Вас не понял - "этот вызов имел под собой и fork и exec" - мы запускаем strace, который также создаёт child процесс. Чтобы увидеть желаемый вызов нужно запустить второй bash (в соседнем pty, например), в котором запустить strace c аттачем по pid на первый баш (strace -p $PID) - то системный вызов (clone, все же это Linux) будет видно.

    • @michurinandrey
      @michurinandrey 4 дня назад +1

      Очень крутое замечание!
      Без clone() никуда, действительно надо стрейсить баш из которого вызываем, что бы поймать clone()!
      Тут главная мысль, что все пишут про fork() && exec(), а по факту, мы видим другое clone && execve.

  • @user-xz6mo6wn4d
    @user-xz6mo6wn4d 5 дней назад

    40:54 LA - это не количество процессов, исполняющихся на CPU (в состоянии Running). Это отношение всех процессов (с состояниями R и D) к имеющимся ресурсам CPU

    • @michurinandrey
      @michurinandrey 5 дней назад

      Спасибо !
      Я это подсветил в своем комментарии выше. Ошибки опечатки и неточности описываю там .

  • @fish9370
    @fish9370 3 дня назад +1

    Будто Роберта Лава перечитал. Конечно поверхностно, но для студентов наверно глубже пока и не надо

    • @michurinandrey
      @michurinandrey 2 дня назад

      Я в лекции прям явно упоминал, что это краткий пересказ Роберта Лава, в моей интерпретации и с моими ошибками. Спасибо за просмотр.

  • @ep4sh
    @ep4sh 2 дня назад

    2:02:56 где-нибудь тут можно было упомянуть про TLB, наверно про него и был вопрос (косвенно, если я верно понял..)

  • @user-rb6fv4fe2v
    @user-rb6fv4fe2v 6 дней назад

    Нельзя так нагло обманывать неокрепшие умы детей про load average.
    Когда в Linux впервые появились средние значения нагрузки, они отражали только потребность в ресурсах процессора, как и в других ОС. Но позднее они претерпели изменения, в них включили не только выполняемые задачи, но и те, что находятся в непрерываемом состоянии (TASK_UNINTERRUPTIBLE или nr_uninterruptible). Это состояние используется ветвями кода, которые хотят избежать прерывания по сигналам, в том числе задачами, блокированными дисковым вводом/выводом, и некоторыми блокировками. Вы могли уже сталкиваться с этим состоянием: оно отображается как состояние "D" в выходных данных ps и top. На странице ps(1) его называют «uninterruptible sleep (usually IO)».

    • @michurinandrey
      @michurinandrey 5 дней назад +1

      Спасибо за уточнение!
      Действительно, похоже сейчас это так работает.