Данный модуль ядра основан на дизайне чипа Kunpeng и представляет собой интерфейс для чтения и записи регистров, используемый для настройки параметров оптимизации производительности чипа на аппаратном уровне процессора.
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 )