Архив метки: hardware

Что надо знать программисту об устройстве современного процессора

Данная статья — всего лишь краткое введение в основные концепции устройства современного процессора. Цель статьи — дать основы, чтобы при объяснении каких-то нюансов в других статья я не повторялся. Все отсылки из тех статей к техническим подробностям и деталям будут вести сюда.

Читать далее

Привязываем процесс к процессору с помощью taskset

Данный простой пример запускает два Java-процесса на Linux-машине. Один процесс посылает сообщения, а второй получает эти сообщения через UDP-протокол через сетевой loopback-интерфейс. Пример призван показать, что привязка процесса к ядру процессора (affinity) позволяет увеличить производительность процесса, уменьшить разброс (jitter) значений latency. В конце статьи я объясняю, почему это происходит.

Читать далее

Многозадачность операционной системы и low-latency

На современной серверной машине low-latency процесс работает на многозадачной операционной системе. Это может быть Solaris, чаще Linux, FreeBSD или Windows Server. Помимо нашего процесса в ОС работают еще и другие процессы, которым ОС тоже должна выделять машинное время. Собственно потому ОС и называется многозадачной.

Конкретный процесс работает определенное время до тех пор пока:

  • не произойдет вызов операции ввода-вывода (i/o operation). Тогда процесс останавливается и ждет окончания — поступления данных. Это может быть ожидание очередной порции байтов из сети или загрузка с диска каких-то данных или страницы памяти (page fault), или окончания записи данных в систему вывода: это может быть запись данных в сеть или запись их на диск (page swap);
  • не истечет выделенное ядром ОС время (time slice), после чего ядро приостанавливает исполнение процесса. Специальный модуль ядра «планировщик» (scheduler) выбирает следующий в очереди процесс и начинает его исполнять. Такое переключение происходит примерно каждые 20~50 миллисекунд.

В данной статье пойдет речь о том, как многозадачная операционная система влияет на исполнение нашего процесса и как мы можем побороть это влияние с целью достижения low-latency.

Читать далее

Как устроена инфраструктура биржи

В данной статье я опишу общее устройство информационной системы абстрактной фондовой биржи. Эти сведения полезны для понимания технологий биржевой торговли и того, как участники торгов взаимодействуют с биржей в технологическом плане.

Читать далее

infoq.com: Understanding CPU Microarchitecture to Increase Performance [video]

Хорошая презентация на сайте Infoq.com о том, как понимание микроархитектуры процессора помогает нам писать оптимальный код, работающий с минимальными задержками.

Читать далее