October 30, 2020

Нагрузка процессора CX8090

Измерять производительность — это хороший способ знать, что осталось за кадром. Правда иногда это просто любопытство. В случае с бюджетным CX8090, все немного тяжелее, и не только по причине слабого процессора частотой в 400 МГц. Кстати, на подходе CX7000, и там будет целых 480 МГц, новый ARM Cortex™-M7 против старого ARM9.

При первом подключении к CX8090, мы видим постоянную загрузку процессора в 10%. Так сделано специально — измерение нагрузки добавляет нагрузку на процессор. Внезапно, эта тема обозрена в статье справочной системы CPU load. Не стоит пренебрегать таким полезным ресурсом, и вообще полезно гуглить, ведь так удобнее искать.

В рабочем режиме измерение лучше отключить, лишняя нагрузка не нужна. И наоборот — на этапе отладки полезно включить. Для этого необходимо запустить редактор реестра: Start → Run... → regedit. И внести изменения в один ключ: HKLM/SOFTWARE/BECKHOFF/TWINCAT/RTime/EnableRTimeMeasurement. 0 = отключено, 1 = включено. Замеры производятся раз в 10 миллисекунд. Точность замеров нагрузки не гарантируется, если циклы задач длиннее 10 мс.

И здесь пост должен был закончиться… посмотрим, как будет вести себя нагрузка, если время цикла увеличить с 10 мс до 50 мс. Просто увеличим время цикла в пять раз.


При реальной нагрузке приблизительно в 30-33% график плющит и колбасит от нуля до реального значения. Кстати, чтобы работал нижний график System Latency, его нужно включить в реестре. Рядом с параметром EnableRTimeMeasurement лежит параметр EnableLatencyMeasurement; 1 = работает, 0 = отключено.

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

В результате получил ровный, красный график нагрузки на процессор. Latency выведен зря, никакой пользы я от него не нашел.


Превышаем лимит нагрузки

Превысим нагрузку процессора и начнем с графика, показывающего времени цикла:

Время цикла по прежнему 50 мс. На графике уставлен потолок в 60 мс, чтобы график было видно. Потолок устанавливается правой кнопкой мыши, Settings…

Значение Total показывает 52,108 мс, что на 2 мс больше лимита времени цикла. Здесь же начинает увеличиваться счетчик превышения лимита Exceed counter. Все очень плохо. Посмотрим на график нагрузки процессора. Сначала системный, затем программный:


Когда значения не совпадают

Результат на графиках выше вполне ожидаемый, но(!) так бывает не всегда. На следующих трех графиках время цикла находится в допустимых пределах, а нагрузка процессора якобы превышена. Что происходит на самом деле понять трудно.


Выводы

Стоит обратить внимание на примечания в справочной системе. Графики времени цикла и нагрузки на процессор нужно анализировать по отдельности. Показания нагрузки на процессор строится как-то хитро, даже при времени цикла ≤10мс. Например, при трехкратном превышении времени цикла можно получить нагрузку на процессор в 56%. Это некорректное показания. Значит для тонкой настройки ПЛК желательно использовать программный способ. Все это относится конкретно к CX8090 и TwinCAT 2.

Разбор программы для измерения и краткое описание функций будет отдельным постом чуть позже.

No comments

Post a Comment

Note: Only a member of this blog may post a comment.