1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openeuler-prefetch_tuning

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 18 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 19:44 006c37b

Prefetch Tuning

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

Среда выполнения

  • Аппаратное обеспечение: на базе чипа Kunpeng 920 (в настоящее время поддерживается только версия 920a).
  • Операционная система: openEuler или EulerOS.

Компиляция, установка и удаление

make clean && make
insmod prefetch_tuning.ko

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

lsmod | grep prefetch_tuning

Для удаления модуля ядра используется следующая команда:

rmmod prefetch_tuning

Удаление модуля приведёт к сбросу всех установленных параметров до значений по умолчанию.

Регулируемые параметры

В настоящее время поддерживаются следующие регулируемые параметры (возможно, в будущем будет добавлено больше регистровых битов):

Параметр Описание Диапазон регулировки
policy Политика предварительной выборки От 0 до 15
read_unique Разрешать ли кросс-NUMA доступ к кэшу 0 (разрешить), 1 (запретить)
reg_nosnp_atomic_bypass_en Обходить ли атомарные операции процессоров 0 (отключить), 1 (включить)
reg_ro_alloc_shut_en Указывает, включена ли функция распределения операций readOnce на L3 0 (выключить), 1(включить)
reg_wrfull_hit_shut_en Указывает, отключить ли функцию. Если 64wu_full попадает в канал M, не отправлять createE в HA 1 (включить), 0 (отключить)
req_conflict_en Включать ли обратное давление на процессор в одном такте, если запросы от процессора и не-процессора получены в одном такте 1 (включить), 0 (отключить)
lower_power_en Включить ли режим низкой мощности CQ 1 (включить), 0 (отключить)
dataclean_shut_en Маскировать ли бит CE, переносимый writenosnoopfull ядра TaiShan 0 (не экранирован), 1 (экранирован)
arb_flush_shut_en Когда CQ простаивает, сбросить статус включения регулировки ARBIT указателя планирования 0 (включить), 1(отключить)
pgnt_arb_exat_shut_en Включен ли режим планирования pgrant в режиме try 0 (включен), 1 (отключен)
fast_exter_shut_en Отключить ли внешние данные запроса на промах, проходящие через быстрый путь 1(отключено), 0 (включено)
fast_data_shut_en Отключить ли данные промаха, проходящие через быстрый путь 1 (отключено), 0 (включено)
pend_data_shut_en Отключить ли данные промаха, проходящие через канал pend 1 (отключено), 0 (включено)
ramswap_full_shut_en Полное или частичное выполнение ramswap 0 (полное), 1 (частичное)
ramfwd_shut_en Включить функцию ramfwd 1 (отключить), 0 (включить)
reads_upgrade_en Включить повышение статуса операции read_shared 0 (отключить), 1(включить)
rdmerge_pipe_en Разрешить ли попадание запросов Sqmerge в Cpipe5 1 (разрешено), 0 (запрещено)
spill_en Включить ли функцию вращения L3T 0 (отключить), 1 (включить)
spill_shared_en Включает ли L3T функцию Spill в общем состоянии 0 (отключить), 1(включить)
spill_instr_en Включает ли L3T инструкцию Spear 0 (отключить), 1(включить)
sqrdmerge_en Включить ускорение RDMERGE после операции SQ merge 0 (отключить), 1(включить)
prefetch_drop_en Отбрасывать ли пакеты предварительной выборки в режиме L3T 0 (отключить), 1(включить)
datapull_en Включает ли L3T функцию извлечения данных 0 (отключить), 1(включить)
mkinvld_en Позволяет ли L3T преобразовывать makelinvalid в cleaninvalid 0 (разрешает), 1(запрещает)
ramthr_en Разрешает ли L3D напрямую возвращать данные в ЦП через канал thr 1 (разрешает), 0 (запрещает)
rsperr_en Указывать, сообщать ли rsperr 1 (разрешить), 0 (запретить)
iocapacity_limit_en Ограничивать ли ёмкость ввода-вывода кэша 0 (без ограничения), 1 (с ограничением)
force_cq_clk_en Включить принудительно часы очереди кэша для L3T 0 (отключить), 1(включить)
sqmerge_en Могут ли последовательные обращения к адресам занимать только одну запись в squeue для ускорения процесса слияния 0 (ограничить), 1 (слить)
rdmerge_upgrade_en Разрешить RS сливаться с предыдущим ReadE 0 (запретить), 1 (разрешить)
prefetch_drop_hha_en Слить ли не-предварительную операцию с предыдущей предварительной операцией 0 (разрешить), 1 (ограничить)
tag_rep_alg Выбор алгоритма строки кэша 0 (случайный), 1 (drrip), 2 (plru), 3 (случайный)
rdnosnp_nca_shut_en Пометить ли bypass, отправленный CPU как NCA 0 (да), 1
--- --- ---
wrfull_create_en Определяет, будет ли включена 128-байтная функция writeunique для получения разрешения, но не данных от HHA. 0 (отключить), 1 (включить)
cleanunique_data_en Указывает, возвращает ли функция cleanunqunie данные. 0 (отключить), 1(включить)
lock_share_req_en Включает ли регистровый замок в режиме общего доступа и не доставляет операции в HHA. 0 (запрещено), 1 (разрешено)
ddr_compress_opt_en Переключатель оптимизации поддержки сжатия HHA. 0 (отключить), 1 (включить)
atomic_monitor_en Указывает, следует ли включать функцию atomic_monitor. 0 (отключить), 1 (включить)
snpsleep_en Разрешает ли включение snp sleep. 0 (отключить), 1 (включить)
prefetchtgt_en Позволяет ли включить prefetchtgt. 0 (отключить), 1 (включить)
sequence_shape_en Позволит ли процессору выполнять несколько циклов после того, как SQ будет почти заполнен. 0 (отключить), 1 (включить)
mpam_portion_en Включение функции распределения MPAM на основе способа. 0 (отключить), 1 (включить)
mpam_capacity_en Включение функции распределения MPAM на основе статистики мощности. 0 (отключить), 1 (включить)
eccchk_en Включить ECC_CHK. 0 (отключить), 1 (включить)
refill_1024_relax_en Использовать ли 1024-битный размер для отправки запросов на доступ. 0 (отключить), 1 (включить)
lookup_thr_en Включать ли сквозной канал во время конвейерного запроса. 0 (отключить), 1 (включить)
snpunique_stash_en Поддержка приёма Hydra SnpUniqueStash. 0 (запретить), 1 (поддерживать)
prime_timeout_mask_en Включить счётчик тайм-аута. 0 (отключить), 1 (включить)
prime_sleep_mask_en Включить функцию освобождения запроса на сон через некоторое время. 0 (отключить), 1 (включить)
prime_extend_mask_en Разрешить ли случайное распределение запроса для extendway. 0 (отключить), 1 (включить)
force_intl_allocate_fail Включить функцию принудительного определения сбоя операции назначения типа intleave. 0 (отключить), 1 (включить)
cpu_write_unique_stream_en Принудительно обрабатывать операцию writeunique, доставленную процессором, как тип потока. 0 (отключить), 1 (включить)
cpu_pf_lqos_en Разрешать ли принудительную обработку операции предварительной выборки, доставленной процессором, как операцию lqos. 0 (отключить), 1 (включить)
cpu_vic_lqos_en Принудительная обработка операции writeunique, доставленной процессором, как типа потока. 0 (отключить), 1 (включить)
prime_excl_mask_en Разрешить случайную эксклюзивную операцию. 0 (отключить), 1 (включить)
prime_drop_mask_en Разрешить повторную попытку предварительной выборки случайным образом. 0 (отключить), 1 (включить)
prime_home_mask_en Включить принудительную обработку forcehome для внутренних запросов случайным образом. 0 (отключить), 1 (включить)
refillsize_com_ada_en Разрешить автоматическое определение размера запроса, отправленного в HHA. Если размер непрерывно получаемых запросов составляет 128 или 64 байта, размер предварительно выбранного запроса автоматически корректируется. 0 (отключить адаптивную настройку размера), 1 (включить адаптивную настройку размера)
refillsize_pre_ada_en Разрешить адаптацию размера запроса, отправляемого в HHA. Если размер постоянно получаемого запроса составляет 128 байт или 64 байта, размер обычного запроса автоматически корректируется. 0 (отключить адаптивную настройку размера), 1 (включить адаптивную настройку размера)
sequence_opt_en Изменить обработку L3T на последовательный режим при блокировке. 0 (ограничить), 1 (включить)
prefetch_clr_level Количество запросов, которые не могут найти соответствующий буфер предварительной выборки и снижают приоритет каждого буфера, чтобы существующий буфер было легче заменить. 0 ~ 255
prefetch_overide_level Начальный уровень покрытия для операции, входящей в буфер предварительной выборки. Если значение неверно, порог уменьшается на 1. Если значение верно, порог увеличивается на 1. Если значение равно 0, правило предварительной выборки необходимо заменить. 0 ~ 15
prefetch_utl_ddr Использование DDR, которое приводит к уменьшению порога предварительной выборки вдвое. 0 (меньше 1/2), 1 (1/2), 2 (3/4), 3 (почти полный)
prefetch_utl_ddr_en Следует ли... Параметр
--- --- ---
reg_prefetch_thresh Предел предварительной выборки для операций чтения из DDR. Если количество операций чтения/записи в очереди обработки HHA превышает этот предел, операция prefetch_thresh запрещается для чтения данных из DDR и операция отбрасывается напрямую. Эта конфигурация и reg_prefetch_outstanding одновременно контролируют порог предварительной выборки. 0 ~ 127
reg_spec_rd_level Конфигурация порога DDR для спекулятивного чтения. Когда команды чтения и записи DDR в очереди обработки HHA превышают порог, спекулятивное чтение DDR запрещено. После запроса каталога система определяет, следует ли читать DDR на основе результата запроса каталога. Примечание: рекомендуется значение 0x08 или 0x10. 0 ~ 127
reg_drop_level Конфигурация порога отбрасывания предварительной выборки. Когда количество команд чтения и записи DDR в очереди обработки HHA превышает порог, некоторые команды чтения предварительной выборки могут быть отброшены. 0 ~ 127
dvmsnp_outstanding Выдающееся значение DVMSNP MN. Примечание 1: если dvmsnp_perf_en включён, настроенное значение действительно. Максимальное значение outstanding может быть 5 при использовании ядра TaiShan. В противном случае возникают ошибки переполнения. Примечание 2: SMMU не может соответствовать выдающемуся значению Dvmsnp 5. Поэтому вам нужно установить переключатель на 3 для Totem и Infinite 1383. Totem и Nimbus 1620: установите DVM outstanding на 5. Однако не настраивайте POE для широковещательного узла DVMSNP. POE использует частную таблицу страниц и не требует DVMSNP. 0 ~ 15 (Примечание: 0 представляет уровень outstanding 1)
dvmreq_outstanding Выдающееся значение DVMREQ MN. Примечание 1: Если dvmreq_perf_en включен, настроенное значение действительно. Максимальное значение outstanding может составлять 9 при наличии четырёх чипов. В противном случае возникает ошибка переполнения. Примечание 2: В случае двух чипов максимальное выдающееся значение totem может составлять 10, а максимальное выдающееся значение nimbus или infinite — 24. Это обеспечивает наилучшую производительность. Примечание 3: В случае одного чипа нет ограничений на выдающуюся конфигурацию totem. 0 ~ 31 (Примечание: 0 представляет уровень outstanding 1)
dvmsnp_perf_en Включить выдающийся уровень для dvmsnp. (Примечание: после включения функции выдающееся значение dvmsnp MN равно значению dvmsnp_outstanding.) 0 (отключить), 1 (включить)
dvmreq_perf_en Включить выдающийся уровень для dvmreq. (Примечание: После включения функции выдающееся значение dvmreq MN равно значению dvmreq_outstanding.) 0 (отключить), 1 (включить)

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/openeuler-prefetch_tuning.git
git@gitlife.ru:oschina-mirror/openeuler-prefetch_tuning.git
oschina-mirror
openeuler-prefetch_tuning
openeuler-prefetch_tuning
master