На Хабре недавно публиковалось две статьи о новом ядре Linux. В одной из них говорилось о том, что драйвер AMD Radeon составляет 10,5% ядра Linux 5.9, в другом перечислялись новые возможности и функции. На днях появилась еще и информация о том, что это ядро поддерживает 99% популярного PCI-оборудования на рынке.

Конечно, «популярное» вовсе не означает «поддерживает вообще все, что есть", так что общая цифра может быть гораздо ниже 99%, учитывая разнообразие устройств. Но все равно, ситуация с поддержкой Linux «железа» становится лучше год от года. Как проводилось изучение поддержки PCI-устройств?

Если бы целью проекта было изучение общего объема «железа», поддерживаемого ядром, то можно было бы просто взять соотношение — «поддерживаемые устройства/общее количество устройств». Но здесь две сложности:

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

Со вторым пунктом все просто: есть распространенные устройства, поддержка которых необходима, поскольку ими пользуется большое количество людей. А есть редкие системы, которые нужны считанным единицам пользователей. Конечно, пренебрегать их потребностями тоже нельзя, но этот мир несправедлив — разработчики обычно решают сначала первоочередные вопросы, а потом уже переходят к вторичным.

Авторы проекта по изучению поддержки PCI-оборудования ядром Linux 5.9 пошли более простым путем. Они просуммировали все экземпляры поддерживаемых устройств, разделив на общее количество поддерживаемых и неподдерживаемых.

Для расчета использовалась такая формула:

$Status = (S1*T1 + S2*T2 + ... + Sn*Tn) / (T1 + T2 + ... + Tn)$


Где Sn — статус поддержки устройства (1 — поддерживается, 0 — не поддерживается), а Tn — общее количество устройств.

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

Ознакомиться с информацией о популяции можно в специальном репозитории DevicePopulation. Статус поддержки в новом ядре Linux можно получить при помощи проекта LKDDb.

Если есть желание оказать информационную поддержку проекта, отправить данные о своих устройствах можно при помощи инструмента hw-probe.

sudo -E hw-probe -all -upload

Вот результаты:
PCI Class Devices Support
Card reader 9433 100%
Communication controller 39144 98.23%
Dma controller 115 99.13%
Dvb card 85 100%
Encryption controller 8169 88.64%
Firewire controller 7978 99.97%
Flash memory 469 37.95%
Graphics card 89190 98.06%
Input device controller 262 100%
Ipmi smic interface 155 100%
Modem 307 89.58%
Multimedia controller 2194 88.56%
Net/ethernet 55774 99.92%
Net/other 10929 99.82%
Net/wireless 43499 99.80%
Non-essential instrumenta... 5103 99.98%
Sd host controller 10370 100%
Serial bus controller 12251 99.80%
Serial controller 4901 99.84%
Signal processing controller 37989 97.22%
Smbus 62763 99.92%
Sound 103406 99.95%
Tv card 902 100%
Usb controller 215098 100%
В среднем получается 99.27%.

А вы согласны с методикой подсчета и результатами? Поделитесь своим мнением в комментариях.