Проверете подробна информация за процесора в Linux с CoreFreq

Чувствахте ли някога нуждата да проверявате информацията за процесора в Linux ? Искали ли сте някога да знаете реалната скорост на вашия CPU? Или кой процес в момента е обвързан с дадено ядро? Това изглежда са въпроси само за експерти.

Но остани с мен - като Алис, можеш да откриеш повече от очакваното, като преминеш през огледалото. Така че, без повече шум, позволете ми да представя нашия главен герой: CoreFreq.

Запознайте се с процесора си в Linux с CoreFreq

CoreFreq е инструмент за събиране на данни за производителността на процесора на Linux системи. Има лиценз с отворен код. Той е написан от CyrIng френски разработчик и източниците са достъпни на GitHub.

Въпреки че очевидно е стабилен, CoreFreq трябва да се разглежда като експериментален. От днес той е наличен само в хранилището на Arch. Не е опакован (все още) за друго разпространение. Така че, ако искате да опитате, може да се наложи да го компилирате. Което не е трудно и може да е първа стъпка, ако никога преди това не сте правили това.

И накрая, това, което прави CoreFreq различен от други подобни инструменти, е, че цели да събере данни с висока точност . За да направите това, CoreFreq трябва да наблюдава процесора възможно най-близо до хардуера. Да видим сега как се получава информация за процесора на Linux машина.

Как действа CoreFreq?

CoreFreq се състои от три части. Модул на ядрото, демон и потребителски интерфейс на командния ред (CLI).

  • По дефиниция модулът на ядрото ще има пълен достъп до хоста. Неговата отговорност е да събере данните от ниско ниво.
  • След това данните се събират от демон потребителски потребител. Демонът трябва да се изпълнява като root .
  • И накрая, CoreFreq идва с терминален интерфейс, за да докладва данни в приятен за четене формат. Този CLI инструмент е обикновен процес и може да се използва от крайния потребител.

Компилиране и стартиране на CoreFreq

Преди да стартирате CoreFreq, трябва да го компилирате. Това означава, че преобразуването на изходния код, както е написано от програмиста по такъв начин, че компютърът ви ще го разбере. Не се страхувайте, когато ви кажа, че трябва да го компилирате - няма да имате много работа. Вашият компютър ще свърши цялата упорита работа.

Стъпките, необходими за компилирането на CoreFreq, ще бъдат най-вече едни и същи за всички дистрибуции на Linux - с изключение на инсталирането на необходимите пакети. Тук давам инструкциите за CentOS / Red Hat и Debian. Чувствайте се свободни да използвате раздела за коментари, за да дадете повече подробности относно други дистрибуции, ако е необходимо.

Въпреки това е време да отворите любимия си терминален емулатор и да започнете да пишете. За Red Hat / CentOS необходимите инструменти са част от групата „Инструменти за разработка“, така че просто инсталирайте това:

# specific to Red Hat, CentOS sudo yum group install "Development Tools" 

За дистрибуции, базирани на Debian и Debian, трябва да инсталирате няколко отделни пакета вместо:

  # specific to Debian-based distributions sudo apt-get install dkms git libpthread-stubs0-dev 
  • dkms е инструмент за изграждане на модули на ядрото от източник. Необходимо е, тъй като CoreFreq е реализиран като модул на ядрото за събиране на данни възможно най-близо от хардуера;
  • git е инструмент, използван за разпределено развитие. Тук ще използваме само за изтегляне на копие от най-новото дърво за развитие на CoreFreq. Но ако искате, можете сами да поправите софтуера и да изпратите заявки за изтегляне до първоначалния разработчик;
  • libpthread-stubs0-dev е необходима библиотека за изграждане на CoreFreq (всъщност в Linux съдържа само pkg-config данни, но нека се преструваме за днес)

След като необходимите инструменти ще бъдат инсталирани на вашата система, ще е време да изтеглите изходния код на CoreFreq:

  # Distribution-agnostic part git clone //github.com/cyring/CoreFreq.git 

Моля, забележете git ще изтегли и последната версия на източника, както и цялата история на модификациите на проекта. За обикновен потребител това е безполезно. Но… имам тайна надеждата, че това може да е повод да разгледате по-отблизо процеса на разработка на отворения код. Но нека затворим тази скоба - тъй като вече сте готови да компилирате софтуера:

  cd CoreFreq/ make && echo Done 

След няколко секунди в прозореца на терминала трябва да се появи думата „Готово“, което означава, че компилацията е била успешна.

В този момент трите части на CoreFreq са компилирани и готови за стартиране. Както казах и преди, софтуерът се състои от три части - така че всъщност имате трима софтуерни програми, с които да стартирате CoreFreq.

Инсталиране на модула на ядрото

По технически причини - тъй като CoreFreq използва един и същ брояч на ниско ниво - първо трябва да деактивирате контролера NMI.

На моята Debian система това може да стане чрез редактиране на файла / etc / default / grub, за да добавите аргумента на командния ред на nmi_watchdog = 0 и след това да изпълните update-grub :

  sudoedit /etc/default/grub update-grub 

Разбира се, трябва да рестартирате новия аргумент на ядрото, който трябва да се вземе под внимание.

Моля, обърнете внимание, докато пишете тази статия, аз не го направих. И нямам забележим проблем.

За да инсталирате модула на ядрото, ще използваме стандартния Linux инструмент insmod. Той ще зареди модула в ядрото и ще го стартира:

  sudo insmod corefreqk.ko 

Можете да проверите дали CoreFreq е инсталиран чрез lsmod:

  lsmod | grep corefreq corefreqk 45056 0 

И накрая можете да проверите дали CoreFreq е разпознал процесора ви, като прегледа изхода на dmesg:

  sudo dmesg | grep CoreFreq [57413.945720] CoreFreq: Processor [06_1E] Architecture [Nehalem/Lynnfield] CPU [8/8] 

Стартиране на демон

Сега е време да стартирате демон. Целта му е да събира данни, събрани от модула на ядрото (тъй като е добър дизайн да се правят възможно най-малко неща в ядрото):

  sudo ./corefreqd -i 

Тази команда няма да се върне, докато демонът се изпълнява. Така че, не се учудвайте, че сте видяли терминала, очевидно "висящ" - не е: демонът просто работи, готов да приеме клиентски заявки. Забелязахте ли, че използвам знака „-i“ по-горе? Това е за демон да показва повече информация за терминала за това какво се случва. Само въпрос на любопитство - но ей, тази статия е за любопитство!

Стартиране на клиента

Вече сте готови да стартирате клиентското приложение. Отворете нов терминал и отидете в директорията CoreFreq. От там ще стартирате клиента:

  cd CoreFreq ./corefreq-cli 

Проучване на вашия процесор в Linux

Освен статичните характеристики на вашия процесор, като например името на модела или неговите възможности, след като CoreFreq работи, можете да започнете да изследвате динамичното поведение на вашия процесор в условия на живот. Например, в екрана заснемане по-горе, можете да видите на различни ядра на процесора ми работят между 138MHz и 334MHz. (Малкият) товар се разпределя равномерно между тях.

В допълнение, можете да видите за всяко ядро ​​количеството време, прекарано в различните C-състояния на процесора (общото трябва да бъде 100%) - и времето, прекарано в turbo Boost режим. Ако не сте запознати с тези концепции, мога само да ви насърча да разгледате тези отлични обяснения от Виктор Стинер: //haypo.github.io/intel-cpus.html

В този момент, в името на демонстрацията, пуснах безкраен цикъл в терминал в „надеждата“ да консумирам 100% от едно ядро:

  # infinite loop # eats 100% of the CPU--really? while true; do : ; done 

... и наистина, мога ясно да видя коя ядро ​​е в момента обвивката на безкрайния цикъл. Това може да се потвърди, като се потърси в монитора за задачи corefreq-cli

Натиснете, за да разкриете менюто и да изберете view> task monitor:

Не можете да видите това на снимката по-горе, но ако го изпълните сами, ще забележите, че задачата скача от ядрото на друго след няколко секунди. Мисля, че знам причината за това поведение. Но може ли да го познаете? Не се колебайте да използвате раздела за коментари, за да споделите идеите си!

Но преди да го направим, нека видим как да спрем CoreFreq.

Спиране на CoreFreq

За да спрете CoreFreq, просто трябва да излезете от трите части на софтуера, в обратен ред, в който сте ги стартирали.

  • излезте от клиента, като натиснете F4 или CRTL-C в клиентския терминал
  • излезте от демона, като натиснете CTRL-C терминал на демона
  • премахнете модула на ядрото sudo rmmod corefreqk

И сте готови.

И сега?

В някои аспекти CoreFreq ви дава информация за процесора в Linux, която можете да съберете с помощта на top, htop, сензори, lscpu и няколко други инструмента. Но с CoreFreq не само имате цялата информация само в един интерфейс, но като се има предвид начинът, по който се събират данните, имате по-висока точност. И накрая, някои данни просто не са налични във всеки друг инструмент - доколкото знам, разбира се (съотношението C-състояния? Инструкция за цикъл?)

Може да откриете, че този инструмент е насочен единствено към програмисти, които се опитват да настройват интензивни алгоритми за изчисления. Или за геймърите, които искат да проверят колко печалба са получили от овърклокването на хардуера си.

Но лично аз трябва да призная, че тези инструменти винаги са ми интересни, тъй като ни позволяват да „докоснем” реалността на съвременния хардуер - обикновено много по-сложен, отколкото обикновено го разбираме. Например, колко от вас са знаели, че различните ядра на процесора могат да работят с различна скорост - или може да са в различен С-режим?

Както и да е, сигурен съм, че някои от вас ще намерят много умни употреби на този инструмент или ще направят интересни открития за техния хардуер. Не се колебайте да споделите това с нас в раздела за коментари по-долу. Сигурен съм, че CyrIng ще се радва да чуе вашите идеи и отзиви за CoreFreq, за да стане още по-добре.

И не забравяйте: ако сте разработили софтуер с отворен код, не се колебайте да се свържете с нас, за да се включите в него.

Препоръчано

Solus 3 Издаден! Проверете новите функции
2019
Вокал: Приложение за подкаст за Linux
2019
Liferea: Клиент на RSS и още
2019