Linux проверить поддержку набора команд процессора

Kaspersky

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

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

Linux проверить поддержку набора команд процессора

Вся необходимая информация о процессоре находится в /proc/cpuinfo в секции flags

Вывод всех наборов команд процессора

Для вывода всех поддерживаемых наборов можно использовать команду ниже

cat /proc/cpuinfo |grep "flags"| uniq

Пример вывода

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology cpuid tsc_known_freq pni cx16 x2apic hypervisor lahf_lm cpuid_fault pti

Проверка поддержки конкретного набора команд

Есть несколько вариантов проверки, самый простой, это поиск через grep

Проверка поддержки SSE 4.2 

grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 suported"|| echo "SSE 4.2 not supported"

Проверка подержи SSSE 3 

grep -q ssse3 /proc/cpuinfo && echo "SSSE 3 suported"|| echo "SSSE 3 not supported"

Но такой способ не позволяет точно проверить поддержку к примеру sse, так как он является частью слов sse2, sse4 и т.д.

Для проверки, можем использовать массив и точное сравнение значений

Проверка поддержки SSE

flag=sse

declare -a flags=( $(cat /proc/cpuinfo |grep "flags"| uniq) )
for i in ${!flags[@]}; do
    if [ ${flags[$i]} == $flag ];
    then
        echo "$flag suported"
    fi
done

Немного громоздко, но дает точный результат.

Добавить комментарий