
- •Руководство по настройке производительности
- •Аппаратная иерархия
- •Жесткие диски
- •Оперативная память
- •Конвейер и регистры
- •Программная иерархия
- •Исполняемые программы
- •Обработчики прерываний
- •Ожидающие нити
- •Нити, готовые к выполнению
- •Нити, выполняемые в данный момент
- •Инструкции, выполняемые в настоящий момент
Руководство по настройке производительности
Схема выполнения программы
Обычно программист представляет себе выполнение программы как последовательную обработку инструкций, составляющих определенную функцию. Значительная доля усилий разработчиков аппаратного и программного обеспечения тратится на то, чтобы программистам не нужно было отказываться от этой идеализированной картины при работе в современных многопроцессорных и многозадачных системах с большой памятью и высоким быстродействием. Однако если программист не откажется от подобной иллюзии, то создаваемые им программы будут выполняться медленно и с большими затратами ресурсов системы.
Для того чтобы получить правильное представление о параметрах рабочей схемы, необходимо использовать динамическую, а не статическую модель выполнения программы. Она показана на следующем рисунке.
Рис. 1-1. Иерархия выполнения программы.
Схема представляет собой треугольник. С левой стороны перечислены компоненты аппаратного обеспечения, соответствующие компонентам операционной системы, перечисленным с правой стороны.
Программа переходит с нижнего уровня, на котором она представляет собой набор данных, хранящихся на диске, на верхний уровень, на котором инструкции программы выполняются процессором.
Например, если перечислить все уровни, начиная с нижнего, то:
на диске хранятся исполняемые программы,
в оперативной памяти хранятся ожидающие нити операционной системы и обработчики прерываний,
в буфере таблицы преобразования адресов хранятся нити, готовые к выполнению,
в кэше хранятся нити, переданные на выполнение,
в регистрах и конвейере процессора находятся выполняемые в данный момент инструкции.
В процессе выполнения программа должна пройти все этапы аппаратной и программной иерархии, более или менее параллельно. Каждый элемент в аппаратной иерархии имеет большую ценность, чем элемент, расположенный ниже него. Программа конкурирует с другими программами за каждый ресурс, а переход с одного уровня на другой занимает некоторое время. Для того чтобы понять, в чем заключается процесс выполнения программы, нужно иметь представление о каждом из уровней иерархии.
Аппаратная иерархия
Обычно время, необходимое для перехода с одного аппаратного уровня на другой, зависит от времени ожидания на нижнем уровне. Под временем ожидания понимается время, проходящее с момента отправки запроса до получения первых данных.
Жесткие диски
При выполнении программы больше всего времени затрачивается на считывание исходного кода и данных программы с жесткого диска (если не учитывать время, затрачиваемое на ожидание ввода пользователя). Это время тратиться на выполнение следующих действий:
Контроллеру накопителя должен быть передан запрос на обращение к определенным блокам диска (время помещения в очередь).
Считывающие головки диска необходимо подвести к правильному цилиндру (время сдвига).
Необходимо дождаться, пока нужный блок появится под считывающими головками (время поворота цилиндра).
Данные должны быть переданы контроллеру (время передачи) и отправлены приложению (время обработки прерывания).
Обращения к диску могут быть вызваны не только явными запросами прикладной программы. Иногда настройка системы может привести к выполнению ненужных операций дискового ввода-вывода.