Флаги /proc/cpuinfo для архитектуры x86

    Все мы хоть раз в жизни использовали команду cat /proc/cpuinfo. Многие — лишь для того, чтобы узнать количество процессоров и ядер в системе, некоторые — узнать о поддержке конкретной технологии, например, аппаратной виртуализации.
    Однако очень мало линуксоидов воспринимают всерьез самую длинную строку вывода — так называемые flags, а еще меньше знают, как расшифровывается тот или иной параметр, поскольку зачастую флаги имеют дикие и непонятные имена. Я постараюсь описать большинство распознаваемых флагов, специфичных для архитектуры x86.

    Немного ликбеза


    Псевдофайловая система /proc является виртуальной и специфична лишь для ядер Linux. Она не содержит реальных каталогов и файлов, не занимает места на вашем накопителе. Работа с файловой системой /proc — наиболее удобный способ получения информации о вашей системе, включая аппаратное обеспечение. Также имеется в наличии подкаталог /proc/sys, отвечающий за текущие параметры ядра, которые доступны как для чтения, так и для записи. Большинство файлов читабельно и вполне понятно для человека.
    Многие программы, выводящие информацию о системе, используют дерево /proc.

    Въезд


    Займемся непосредственно псевдофайлом /proc/cpuinfo.
    Предлагаю взглянуть на типичное его содержание, из которого мы сейчас выкинем строки, не интересующие нас в контексте данной статьи:

    root@system:~# cat /proc/cpuinfo | egrep "(model name|flags)"
    
    model name      : Intel(R) Xeon(R) CPU            5130  @ 2.00GHz
    flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx tm2 ssse3 cx16 xtpr dca lahf_lm
    
    model name      : Intel(R) Xeon(R) CPU            5130  @ 2.00GHz
    flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx tm2 ssse3 cx16 xtpr dca lahf_lm

    Как можно видеть, здесь представлен серверный процессор Intel Xeon 5130, обладающий двумя ядрами. Много непонятных флагов, не так ли?

    TOP5: какими флагами интересуются больше всего


    1. HT — Hyper-Threading support
    Реализация технологии одновременной мультипоточности. Технология увеличивает производительность процессора при определённых рабочих нагрузках. Если включена, то система определяет два логических процессора на один физический процессор (ядро). Присутствует исключительно в сериях процессоров Intel Xeon, Pentium 4, Atom, Core i3, Core i5, Core i7.
    2. LM — Long Mode (x86-64 support)
    Грубо говоря, если указана, процессор выполнен по 64-битной технологии (также имеет названия: x86-64, x64, AMD64, Intel64, EM64T). Это расширение архитектуры x86 с полной обратной совместимостью. В процессорах Intel поддержка появилась с поздних Pentium 4, у AMD — c Athlon64.
    3. VMX (Intel), SVM (AMD)-- Hardware virtualization support
    Поддержка процессором технологий Intel VT-x или AMD-V означает наличие дополнительных инструкций для предоставления прямого доступа к ресурсам процессора из гостевых систем. Позволяет приблизить производительность гостевых систем к реальным и сократить затраты производительности на поддержание хостовой платформы. В настоящий момент Virtual Machine Extensions поддерживается во многих процессорах Intel & AMD, хотя подобные расширения имеют и другие процессорные архитектуры, например, Cell.
    4. SSE*, SSSE*, XMM*, 3DNow!, MMX и пр.
    Различные наборы инструкций для процессоров. Широко используются компиляторами в целях оптимизации кода под конкретную архитектуру.
    5. AES — Intel Advanced Encryption Standard
    Этот довольно спорный набор инструкций увеличивает производительность при кодировании/декодировании AES, присутствующий только у серии Intel Xeon. Часто используется фанатами Intel для подкрепления крутизны серверной линейки CPU, хотя довольно известен тот факт, что процессоры AMD более сильны в криптовании данных, например, в алгоритме SHA.

    Разгон: полный перечень флагов с расшифровкой










    Где посмотреть самому?


    Флаги процессоров неплохо задокументированы в include-файлах ядра Linux. Текущие флаги были взяты из ядра версии 2.6.36.1 в файле ./arch/x86/include/asm/cpufeature.h. Расположение может иногда меняться или отличаться, пользуйтесь командой find.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 25

      +24
      Такое громкое название, а информации, кроме расшифровки аббревиатур, никакой.
        +1
        я открыт для предложений. что вы хотите видеть?
        инфы много, все не влить в лимиты топика, даже таблицу и ту пришлось картинками нарезать.
          +8
          куда интереснее было бы видеть модель ФЛАГ-РАСШИФРОВКА-краткое описание где и для чего обращать внимание.
            +5
            что вы хотите видеть?
            Например, чем это может быть полезно и как это использовать.
            А статью можно и порезать на несколько.
              0
              Ну Gentoo же собирать :)
          +2
          … а еще меньше знают, как расшифровывается тот или иной параметр..
          а еще меньше знают для чего тот или иной флаг нужен. Статья хорошая, но, скорее всего, для весьма узкого круга людей.
            +6
            хм…

            вы бы хоть перепечатали бы, чтобы ctrl-f работал… а так — никакой по сути ценности.
              +2
              тут срабатывает ограничение на количество символов в топике, которое почему-то не исключает разметку из подсчёта. А форматирование таблиц занимает очень много символов.
              А по поводу топика — соглашусь, толку немного, каждая аббревиатура гуглится очень быстро, вот бы статью с подробным описанием каждой, в чём плюшки, в чём дёготь, это да.
                +1
                по количеству символов — все верно, не влезла и половина.
                подробно описывать можно, пожалуй, в частях, разбитых на куски, но стоит ли?
                  +1
                  стоит-стоит. Хотя бы самые важные, как ниже передложили
              0
              Ну и знаю я что PLN это Power Limit Notification, толку то что? Хотелось бы с десяток основных широко нужных технологий и описания для чего они нужны.
                +1
                дельный совет, TOP10 сейчас сварганим :)
                +1
                Оформите в виде cheat-sheet — больше пользы будет ;) И будет как интересное начало цикла статей про CPU флаги ;)
                  0
                  Наиболее полезный флаг для интеловских процессоров — vmx, а про него нет ничего в разделе «виртуализация» (даже его самого). Для всего остального «любителям линукса» достаточно --march=native.

                  Статья ни о чем, подобные статьи могут писаться в полуавтоматическом режиме, смысла в них (кроме seo) нет.
                    +1
                    На всякий случай: HT сейчас есть не только в перечисленных процессорах (как минимум, он есть в некоторых атомах, в 330, например, он точно есть)
                      0
                      вы правы, совсем забыл про атомы.
                      спасибо.
                      0
                      смотрю в /proc/cpuinfo — никаких флагов не вижу.

                      вижу только

                      Features        : swp half thumb fastmult vfp edsp vfpv3 vfpv3d16 
                      
                        0
                        а у вас процессор с архитектурой x86?
                          +1
                          конечно нет =]
                          0
                          ~ $ grep Features /proc/cpuinfo
                          Features: swp half fastmult vfp edsp neon vfpv3
                          ~ $
                          0
                          По третьему пункту вы несёте ахинею. VT-x — это поддержка IOMMU (по сравнению с обычным MMU), использующаяся гипервизорами при предоставлении доступа виртуальным машинам к реальному железу. К VT не имеет отношения (VT — это набор инструкций, причём различающийся у интела и AMD).
                            0
                            может, таки VT-d — это поддежка IOMMU?
                              0
                              упс. Посыпаю голову пеплом, сказал чушь. Да, VT-d — это поддержка IOMMU.
                          • UFO just landed and posted this here
                              0
                              текстом не влезает даже половина :(
                              надо что-то придумать.

                            Only users with full accounts can post comments. Log in, please.