Мастер-класс "Разработка высокопроизводительных серверных приложений для Linux/UNIX"

Доклад принят в Программу конференции
Александр Крижановский (Tempesta Technologies)Александр Крижановский

Основной темой для нас будут методы и технологии, которые позволяют HTTP серверам, серверам Instant Messaging'а, серверам баз данных и другим серверным приложениям обрабатывать сотни тысяч запросов в секунду и гигабиты трафика на "железе" базового класса. Мы посмотрим на примеры кода, научимся их оптимизировать, разберемся в том, как ведет себя Linux под некоторыми типами нагрузок.

  1. архитектура сервера (потоки, процессы, очереди, ввод-вывод);
  2. concurrency (работа с потоками, синхронизация, переключения контекста);
  3. выравнивание данных и оптимизация работы кэшей процессора;
  4. быстрые структуры данных, свойства классических структур данных;
  5. построение внутренних кэшей (структуры данных, политики вытеснения);
  6. lock-free структуры данных (атомарные операции, барьеры памяти);
  7. zero-copy (сетевой и дисковый ввод-вывод без копирования (splice(), mmap() и O_DIRECT), техники снижения копирования в своем коде).