Ports/loongarch64/Kernel

Материал из ALT Linux Wiki
< Ports‎ | loongarch64
Версия от 13:56, 25 марта 2025; IvanMelnikov (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


На этой странице описаны ядра, которые можно найти в sisyphus_loongarch64.

Разновидности (Flavours)

Сторонние модули

  • zfs -- kernel-modules-zfs-[flavour] -- поддержка файловой системы ZFS
  • yt6801 -- kernel-modules-yt6801-[flavour] -- поддержка сетевых карт Motorcomm YT6801, например, встречающихся в материнских платах XC-LS3A6M.
  • la_ow_syscall -- kernel-modules-la_ow_syscall-[flavour] -- ядерная часть libLoL.

Также собраны и другие модули, полный и актуальный список можно увидеть на packages.altlinux.org.

6.12

Flavour по умолчанию, идеалогически и технически максимально приближенный к 6.12 на основных архитектурах.

Дополнительные патчи

ACPI cpufreq driver for LoongArch

Некоторые системы с процессорами Loongson 3 предоставляют возможность управления частотой процессора через ACPI. Сделано это специфичным для таких систем способом, так что со стороны ядра linux для этого требуется особый драйвер, который включен в наши ядра на loongarch64.

Интерфейс управления частотой похож на стандартный cpufreq. Управление осуществляется каждым CPU независимо. Поддерживаются два governor'а:

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
performance powersave

По умолчанию используется governor "performance", при котором CPU всегда работает на штатной (максимальной) частоте, то есть cpufreq никак не влияет на производительность:

Переключаться governer'ами можно используя тот же интерфейс в sysfs:

# echo 'powersave' | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
powersave

Проверим, что получилось:

# grep . /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor:powersave
/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor:powersave
/sys/devices/system/cpu/cpu2/cpufreq/scaling_governor:powersave
/sys/devices/system/cpu/cpu3/cpufreq/scaling_governor:powersave

Вернёмся обратно к performance:

# echo 'performance' | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
performance

Можно также поднять минимальную используемую частоту процессора, чтобы уменьшить лаги при использовании powersave, или опустить максимально используемую частоту для снижения энергопотребления.

Известные проблемы

Если переключать настройки очень быстро, иногда остаётся применённой не последняя, а, например, предпоследняя. При нормальной работе такого не происходит, но этим зачем-то занимается powertop, так что использование powertop на ноутбуках с loongarch64 не рекомендуется.

pci: irq: Add an early parameter to limit pci irq numbers

Серверные системы на loongarch64 часто не предоставляют достаточно векторов прерываний (MSIX vectors) для устройств PCI: драйвера многих устройств выделяют себе векторов по числу логических ядер процессора, что нормально на x86_64 (где таких векторов потенциально больше) или на десктопах loongarch64 (где ядер немного), но на серверных системах 3-4 устройства уже могут исчерпать все вектора MSIX.

Чтобы как-то побороться с этим, добавляется параметр командной строки ядра pci_irq_limit=NNN, позволяющий ограничить количество векторов прерываний, выделяемых каждому устройству. По умолчанию эти ограничения отключены.

ice: Introduce parameters to clamp number of MSI-X vectors

Предыдущая проблема особенно ярко проявляется при работе с сетевыми картами Intel, поэтому было принято решение реализовать и включить по умолчанию дополнительные ограничения для драйвера ice в виде параметров модуля:

  • max_lan_msix=32 для количества векторов прерываний, используемых для обработки LAN-траффика;
  • max_rdma_msix = ICE_RDMA_NUM_AEQ_MSIX + 1 для количества векторов прерываний, используемых для обработки RDMA.

Этими параметрами можно управлять, создав специальный файл в каталоге /etc/modprobe.d, например такой:

# cat /etc/modprobe.d/ice.conf
options ice max_rdma_msix=10 max_lan_msix=24

Чтобы применить изменения в таком файле необходимо выгрузить и потом загрузить модуль ядра ice.

loongarch

Устаревший flavour. Был единственным с момента создания порта до середины марта 2025-го года, после чего рекомендуемой разновидностью стало 6.12. В будущем возможно будет использоваться для "лёгких" экспериментальных ядер.

Переход на 6.12

Из-за различий запаковки (в первую очередь -- отдельный пакет для модулей DRM) автоматический переход систем, использующих kernel-image-loongarch на ядра 6.12 при помощи команды udpate-kernel пока не реализован. Необходимо вручную установить пакеты с ядром и нужными модулями при помощи apt-get install:

  • kernel-image-6.12;
  • kernel-modules-drm-6.12, если Вы пользуетесь видеокартой (на сервере это, возможно, не нужно);
  • kernel-modules-la_ow_syscall, если Вы испольуете libLoL;
  • kernel-modules-zfs-6.12, если Вы используете ZFS;
  • ...

Например, так:

apt-get install kernel-image-6.12 kernel-modules-drm-6.12 kernel-modules-zfs-6.12

После перезагрузки ядро 6.12 будет использоваться по умолчанию. Дальнейшие обновления любых ядер рекомендуется по прежнему получать при помощи update-kernel.