[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Руководство по настройке производительности


Обнаружение эмулируемых инструкций с помощью утилиты emstat

В архитектуре на основе POWER не поддерживается 35 инструкций POWER (в том числе 5 для процессора-"моста" RISC PowerPC 601). Для обеспечения совместимости со старыми версиями программ, двоичный код которых может содержать эти инструкции, в ядре AIX версии 4 предусмотрены функции эмуляции удаленных инструкций. Попытка выполнить удаленную инструкцию приводит к возникновению исключительной ситуации "запрещенная инструкция". Ядро расшифровывает запрещенную инструкцию и, если она относится к числу удаленных, запускает функцию эмуляции этой инструкции.

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

Инструкция Среда эмуляции Приблизительное число команд
abs ассемблер 117
doz ассемблер 120
mul ассемблер 127
rlmi C 425
sle C 447
clf C 542
div C 1079

Чаще всего негативное влияние эмуляции на производительность сказывается в системах RISC PowerPC 604. Типичным примером может служить система RISC PowerPC 601, модернизированная до уровня RISC PowerPC 604. Если вместо ожидаемого роста производительности наблюдается ее снижение, наиболее вероятная причина кроется в эмуляции инструкций.

Избежать проблем, связанных с эмуляцией, можно путем повторной компиляции приложения в обычном режиме. По умолчанию в операционной системе AIX версии 4 приложения компилируются для общей архитектуры. Однако в AIX версии 3 по умолчанию компиляция выполняется для архитектуры POWER, POWER2 и RISC PowerPC 601. При выполнении таких программ в системе RISC PowerPC 604 некоторые инструкции будут эмулироваться.

Если программу необходимо скомпилировать в AIX версии 3, то установите в этой системе APAR Full Common Mode и укажите в команде компиляции следующие опции:

-qarch=com -qdebug=useabs -bI:/lib/FCM/lowsys.exp

Кроме того, следует удалить указанные инструкции из кода, написанного на ассемблере, поскольку повторная компиляция влияет только на код высокого уровня.

Для того чтобы узнать, эмулируются ли некоторые инструкции, воспользуйтесь утилитой emstat (эта утилита предусмотрена в AIX версии 4.2.1 и выше).

Для того чтобы определить, установлена и доступна ли программа emstat, введите следующую команду:

# lslpp -lI bos.adt.samples

Эта утилита расположена в каталоге /usr/samples/kernel.

В операционной системе AIX старше 4.3.3 эта команда поставляется с набором файлов perfagent.tools, и ее вывод имеет несколько другой вид. Для того чтобы определить, установлена и доступна ли программа emstat, введите следующую команду:

# lslpp -lI perfagent.tools

Как и в команде vmstat, в команде emstat указывается интервал сбора информации в секундах и, при необходимости, число интервалов. Первый столбец вывода содержит общее число эмулированных инструкций с момента загрузки системы, а второй - число инструкций, эмулированных за указанный интервал. Если в секунду эмулируется до нескольких тысяч инструкций, то это может служить причиной снижения производительности.

# emstat 1 7
Общее число       Число за интервал
       21951937                21951937
       21967488                   15551
       21974877                    7389
       21994354                   19477
       22007329                   12975
       22018171                   10842
       22018171                       0

Обнаружив, что эмуляция действительно происходит, необходимо найти приложение, в котором эмулируются инструкции. Это гораздо более трудоемкая операция. Один из способов заключается в поочередном запуске приложений и отслеживании их работы с помощью программы emstat. Некоторые случаи эмуляции можно обнаружить с помощью точки трассировки. Их можно найти в текстовом отчете о трассировке по словам PROGRAM CHECK. Процесс или нить, связанные с этим событием трассировки, эмулируют либо собственные инструкции, либо инструкции применяемых библиотечных функций или модулей.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]