Unix Admin - Контрол на честотата на процесора във FreeBSD OS
Контролиране на честотата на процесора във FreeBSD OS
В интернет можете да намерите всичко, е, почти всичко. Проблемът е, че просто не знаете какво да търсите. Така е и с тази тема.
Някак си забелязах колко kWh се консумира на месец, не ми хареса много сумата и реших по някакъв начин да се справя с това. Хард дисковете работят постоянно, серията Westeng Digital Green, както е посочено от производителя - с намалена консумация на енергия. Като цяло няма да спестите много за сметка на тях. Видео карта ..., също няма механизми за регулиране. Мрежа - същата беда. И сега стигаме до процесора. Както знаете, всички сравнително модерни процесори ви позволяват да регулирате тяхната честота, в резултат на това, когато честотата се понижава, консумацията на енергия намалява, а когато честотата се увеличава, съответно се увеличава. Има драйвер във FreeBSD OS,cpufreq за контрол на честотата на процесора.
Бързо поглеждаме човека над него и получаваме следа. средства за управление на този драйвер чрез sysctl:
Да, какво получихме: - dev.cpu.%d.freq - текуща честота на процесора; - dev.cpu.%d.freq_levels - налични настройки за драйвера (честота / мощност). Честота в MHz, мощност в mW; - dev.DEVICE.%d.freq_settings, debug.cpufreq.lowest, debug.cpufreq.verbose - настройки за отстраняване на грешки, повече за тях по-късно.
Ако вярвате на описанието, можете да зададете произволна честота на процесора от списъка dev.cpu.%d.freq_levels. Честотата се задава чрез системната променлива dev.cpu.%d.freq, която също показва текущата честота на процесора. Е, тази функционалност е подходяща, нека започнем да я настройваме.
Инсталиране на драйвери
Тук всичко е елементарно, инсталирайте модула на ядрото и го заредете:
Заредете модула и проверете настройките на драйвера:
Честотен диапазонот 1867MHz до 200MHz, докато консумацията на енергия може да варира от 22.464W до 2.808W. При максимална честота от 1867 MHz, консумацията на енергия ще бъде 22,464 W, а при минимална честота от 200 MHz, само 2,808 W - което е почти 10 пъти по-малко. Разрешаваме драйвера да се зарежда заедно със системата, за това добавяме следния ред към файла /boot/loader.conf:
Опитвам драйвера
Драйверът е зареден в паметта, има списък с честоти - сега е моментът да го изпробвате. Променете честотата на процесора от максимална на минимална и обратно:
Изглежда, че работи, можете да продължите.
Контролираме честотата на процесора в зависимост от натоварването
Първата мисъл, която ви хрумна, е да напишете свой собствен скрипт, който за определен период от време ще събира статистика за натоварването на процесора и ако няма натоварване, просто намалете честотата до следващата стъпка. И ако има натоварване и то е активно, тогава обратното, увеличете го до следващата стъпка. Но след като прочетох подробно документацията на cpufreq, попаднах на услуга powerd, която прави точно това. И така, какви параметри има тази услуга:
Както следва от описанието, поддържат се 4 режима на работа: —max (максимум)—избират се настройки за максимална производителност (задава максимална честота на процесора); - min (минимум) - избира минималните настройки за производителност (задава минималната честота на процесора); - adp (адаптивен) - адаптивен, намалява честотата при празен ход и се увеличава, когато се появи натоварване; — hadp (hiadaptive) — подобно на адаптивния режим, но акцентът е върху производителността за сметка на консумацията на енергия. Честотата на процесора се увеличава по-бързо, отколкото намалява. Не се интересуваме от първите два режима, защото максималният е активиран дори без драйвер, минималният е да го държите включен през цялото времеминималната честота изобщо не е интересна. Остават два режима, adp и hadp. Нека ги видим, за това стартираме powerd на свой ред във всеки режим:
Както следва от описанието, hadp се стреми да заеме максималната честота, но намалява, когато не работи. adp е симетричен баланс, той расте, както и пада. Какво следва от това? И ето какво следва: в режим hadp процесорът ще достигне работната честота възможно най-бързо, т.е. действителен единичен изблик на натоварване ще накара процесора да се мята и върти на максимална честота, докато честотата на процесора ще намалява по-бавно по време на неактивност. В режим adp - ще има симетрично намаляване / увеличаване на честотата на процесора - т.е. той еднакво бавно ще понижава и повишава честотата. Изборът на режим трябва да бъде избран от всеки за себе си, това е въпрос на вкус. Ако искате процесорът да достигне максимална честота възможно най-бързо, тогава това е hadp, но консумацията ще бъде по-висока. Ако не прекъснете и изчакате няколко секунди, преди да достигнете максималната честота, тогава това е режимът adp. Лично на мен adp ми стига за очите. В допълнение можете да регулирате превключването на честотата с параметрите -r и -i: -r - показва прага на натоварване, при който честотата трябва да се увеличи. По подразбиране е 75% или повече. Тези. при натоварване от 75% или повече честотата на процесора ще се увеличи; -i - определя прага на натоварване, при който честотата трябва да бъде намалена. По подразбиране е 50% или по-малко. Тези. при натоварване от 50% и по-ниско, честотата на процесора ще намалее. За моите нужди, както посочих по-горе - не е необходима реакция, мога да изчакам малко. За да направя това, посочвам какво да увелича честотата при натоварване от 90% или повече. Проверка:
Напълно приемлив резултат. Какво показват тези числа: след като процесорът достигне минималната честота от 200 MHzнатоварването беше дадено за секунда, което се вижда в плавно увеличение до 1400 MHz и след изчезване на товара, плавно намаляване. Всеки ред е период от 250 ms, който, между другото, също може да бъде променен с помощта на параметъра -p. Нека се опитаме да намалим периода до 100ms:
Вижда се, че тестовото натоварване за една секунда беше достатъчно, за да доведе процесора до максимална честота и доста бързо - за 700ms (броят линии след 200MHz * 100ms). Докато при интервал от 250ms бяха необходими 9 линии и изходът беше на честота 1400MHz. Може би ще оставя тези настройки. Но всеки трябва да избере тези параметри за своите задачи! Добавете към /etc/rc.conf start powerd и параметри за стартиране:
Е, нека го стартираме:
Всичко! Ефективността на този метод вече ще бъде налична при следващата сметка за електричество.