Как проверить, поддерживает ли мой ЦП x86 -64 -v2?

Жесткие ссылки на файлы неотличимы от того, что вы называете "настоящими файлами" -на самом деле это один и тот же файл, который находится в двух каталогах. Лучшим решением в вашем случае будет просто добавить еще один параметр -exclude-dir="^/timeshift"в команду clamscan.

10
28.01.2021, 10:33
3 ответа

Это основано на ответе Джоэле ; весь скрипт можно было бы написать и на AWK:

#!/usr/bin/awk -f

BEGIN {
    while (!/flags/) if (getline < "/proc/cpuinfo" != 1) exit 1
    if (/lm/&&/cmov/&&/cx8/&&/fpu/&&/fxsr/&&/mmx/&&/syscall/&&/sse2/) level = 1
    if (level == 1 && /cx16/&&/lahf/&&/popcnt/&&/sse4_1/&&/sse4_2/&&/ssse3/) level = 2
    if (level == 2 && /avx/&&/avx2/&&/bmi1/&&/bmi2/&&/f16c/&&/fma/&&/abm/&&/movbe/&&/xsave/) level = 3
    if (level == 3 && /avx512f/&&/avx512bw/&&/avx512cd/&&/avx512dq/&&/avx512vl/) level = 4
    if (level > 0) { print "CPU supports x86-64-v" level; exit level + 1 }
    exit 1
}

Это также проверяет базовый уровень («уровень 1» здесь ), выводит только самый высокий поддерживаемый уровень и завершает работу с кодом выхода, соответствующим первому неподдерживаемому уровню.

18
18.03.2021, 22:34

Вот сценарий оболочки для определения уровня архитектуры процессора x86 _64 в Linux. Он совместим с BusyBox. С опцией -vон показывает, каких флагов вам не хватает, чтобы перейти на следующий уровень. См. Что означают флаги в /proc/cpuinfo? для объяснения флагов.

#!/bin/sh
set -e

verbose=
while getopts v OPTLET; do
  case "$OPTLET" in
    v) verbose=1;;
    \?) exit 2;;
  esac
done

flags=$(grep '^flags\b' </proc/cpuinfo | head -n 1)
flags=" ${flags#*:} "

has_flags () {
  for flag; do
    case "$flags" in
      *" $flag "*) :;;
      *)
        if [ -n "$verbose" ]; then
          echo >&2 "Missing $flag for the next level"
        fi
        return 1;;
    esac
  done
}

determine_level () {
  level=0
  has_flags lm cmov cx8 fpu fxsr mmx syscall sse2 || return 0
  level=1
  has_flags cx16 lahf_lm popcnt sse4_1 sse4_2 ssse3 || return 0
  level=2
  has_flags avx avx2 bmi1 bmi2 f16c fma abm movbe xsave || return 0
  level=3
  has_flags avx512f avx512bw avx512cd avx512dq avx512vl || return 0
  level=4
}

determine_level
echo "$level"

(Подтверждение :Я повторно использовал список флагов из ответа Стивена Китта , который, в свою очередь, основывается на ответе gioele .)

3
18.03.2021, 22:34

Скопировано из:https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/2/diffs

Вы можете увидеть, какая архитектура поддерживается вашим процессором, запустив:

$ /lib/ld-linux-x86-64.so.2 --help

Subdirectories of glibc-hwcaps directories, in priority order:
  x86-64-v4
  x86-64-v3 (supported, searched)
  x86-64-v2 (supported, searched)
7
22.04.2021, 17:22

Теги

Похожие вопросы