Pomoc Częstotliwość CPU (TS-251A)

Korneliusz

Nowy użytkownik
Noobie
2 Wrzesień 2017
6
2
3
37
1
www.linkedin.com
QNAP
TS-x51
Ethernet
1 GbE
Cześć

Kombinuję od jakiegoś czasu ze zwiększeniem zegara CPU w moim QNAP TS-251A. Siedzi tam Celeron 1.6GHz, na sztywno oryginalnie ma ustawiony zegar 1.6, mimo że wg danych producenta procesora może się rozkręcić do 2.48GHz, co pomogłoby na pewno przy wirtualizacji. Aby sprawdzić czy hardware obsługuje aby na pewno 2.48GHz przywróciłem ustawienia fabryczne i uruchomiłem Ubuntu Live z USB, faktycznie pod tym systemem procesor wyciągał deklarowaną przez Intela prędkość 2.48Ghz, więc sprzętowo jest to możliwe.

Czy jest jakiś sposób żeby zmusić procesor do pracy z tą prędkością w QTS? Szukam w plikach systemowych gdzie zegar ustawiany jest na sztywno (bo korzysta z govenora userspace), ale nie mogę znaleźć nic...

Pozdrawiam
Korneliusz
 
Przez ten wątek już przebrnąłem, dlatego turbo w biosie już odblokowalem :) i7z pokazuje mi TURBO ENABLED, ale cały czas częstotliwość stoi na poziomie 1600MHz, niezależnie od obciążenia, dlatego wnioskuję że w moim Celeronie QNAP gdzieś w plikach startowych na sztywno ustawia zegar na tym poziomie.

Pobrałem źródła QNAP GPL, w moim modelu wybrany jest governor 'userspace', więc próbowałem też skompilować moduły dla governora 'performance', ale przy próbie zainstalowania go wywala błąd, także możliwe że to ślepa droga...
 
Oczywiście czytałem o CPU frequency scaling, niestety wygląda na to że cpufreq jest zablokowane w moim systemie, bo w katalogu /sys/devices/system/cpu brakuje plików służących do wymuszania turbo czy częstotliwości procesora. Według konfiguracji kernela z QNAP GPL funkcja ta powinna być aktywna, ale możliwe że jest blokowana już na etapie ładowania jądra flagą "cpufreq.off=1".

Jak już wcześniej pisałem, sam sprzęt daje sobie radę z wyższym taktowaniem, testowałem na zwykłym desktopowym Ubuntu 20.04 odpalonym z USB. Zegar wchodzi tam na 2.48GHz przy obciążeniu programikiem 'yes', wentylator zwiększa obroty, nic się nie zawiesza, temperatura CPU rośnie przy dłuższym obciążeniu do ~75*C.
upload_2020-5-13_20-48-10.png


Udało się :) Mam TS-251A z Celeronem aktywnym Turbo. Udało mi się też uzyskać dostęp do pełnego sterowania cpufreq, ustawiania ręcznie zegara, turbo, governora.

Rozwiązanie jest bardzo proste - przywrócenie ustawień fabrycznych biosu, a następnie podmianka kernela z TVS-X71 i edycja pliku z sumą kontrolną, żeby nazwa serwera docelowego się zgadzała (pierwszy lepszy jaki pobrałem, bo miał podobną konfigurację kernela).

Teraz czas na testy, czy sprzętowo i programowo będzie wszystko ok (np nie braknie mi jakiś driverów z kernela, chociaż z tego co sprawdziłem dużych różnic nie ma).
 
Jasne, jutro postaram się coś napisać, bo już wiem, że jest mod który polecam każdemu z Celeronem :D Wydajność zauważalnie wzrosła, póki co problemów żadnych nie odnotowałem, a testuję intensywnie. Jedyny minus jest taki, że operację tą trzeba będzie przeprowadzać co update systemu, bo on nadpisuje kernela, dlatego zamiast go podsyłać, napiszę lepiej jak go wyciągnąć z obrazu który ściągamy ze strony QNAP.
 
Aby aktywować tryb turbo w TS-251A i pewnie też innych modelach z Celeronem potrzebujemy:
  • monitor z kablem HDMI,
  • klawiaturę na USB,
  • obraz systemu z modelu np TVS-471 pobrany ze strony QNAP, w wersji takiej jak na naszym serwerze,
Zacznijmy od przywrócenia ustawień w biosie. Podłączamy monitor, klawiaturę do serwera, wyłączamy go, a następnie uruchamiamy, po beepie naciskamy klawisz DEL aby wejść do biosu. Na ostatniej z zakładek wybieramy opcję przywrócenia ustawień fabrycznych. Ustawienia zapisujemy i wychodzimy z biosu, pozwalamy systemowi normalnie się uruchomić.

Część programową zaczynamy od podłączenia się z serwerem po SSH. Kopiujemy w dowolne miejsce na serwerze np. /share/Public wypakowany wcześniej obraz systemu (musi być z rozszerzeniem *.img). Obraz jest zaszyfrowany, musimy go odszyfrować wydając polecenie "PC1 d QNAPNASVERSION4 zaszyfrowany.img odszyfrowany.tgz" (gdzie zaszyfrowany.img to nazwa naszego obrazu, a odszyfrowany.tgz to dowolna nazwa pod jaką zostanie zapisany odszyfrowany obraz.

Następnie wypakowujemy odszyfrowany obraz poleceniem 'tar -zxf odszyfrowany.tgz ./rozpakowany/', gdzie rozpakowany to nazwa wcześniej stworzonego folderu ('mkdir ./rozszyfrowany').

Po rozpakowaniu powinniśmy mieć już dostęp do plików kernela z TVS-471 tj bzImage, bzImage.sign i bzImage.cksum, które przydadzą się za chwilę.

Kolejnym krokiem będzie uzyskanie dostępu do pamięci flash gdzie zapisany jest obecny kernel. W TS-251A znajduje się on pod /dev/mmcblk0p2. Tworzymy sobie katalog 'mkdir /mnt/boot' i montujemy w nim partycję z kernelem - 'mount /dev/mmcblk0p2 /mnt/boot'. Wykonujemy kopię zapasową plików naszego kernela (bzImage*), które znajdują się teraz w folderze /mnt/boot/boot/, po czym podmieniamy je uzyskanymi wcześniej plikami z odszyfrowanego i rozpakowanego obrazu TVS-471.

Na koniec pozostaje tylko (chociaż nie wiem czy jest to konieczne) zmiana w pliku bzImage.cksum, gdzie zmieniamy ścieżkę kernela na taką jaka znajduje się w bzImage.cksum którego backup wcześniej zrobiliśmy (u mnie to było '/root/daily_build/64_30/4.4.2/Model/TS-X51A/build/bzImage'), nie zmieniając przy tym wartości sumy kontrolnej na początku pliku, bo zakładam że ta jest sprawdzana przy starcie systemu.

Na koniec robimy reset systemu. Po jego uruchomieniu możemy sprawdzić poleceniem 'cat /proc/cpuinfo' aktualny zegar procesora. W polu cpu MHz powinno pojawić się 2480.xxx Mhz. W ten sposób uzyskaliśmy też dostęp do sterowania procesorem z poziomu /sys/devices/system/cpu, gdzie można zadawać zegary dla poszczególnych jąder, sterować turbo, governorem...

Modyfikację tą będzie należało powtarzać po każdym update QTS na serwerze, ale biorąc pod uwagę wzrost wydajności serwa myślę że warto :) Nie mierzyłem poboru prądu przed i po, więc wiele na ten temat powiedzieć nie mogę. Pod pełnym obciążeniem CPU, jego temperatura utrzymuje się poniżej 75*, przy wentylatorze pracującym w automacie, cały czas na najniższej prędkości.
 
Dziękujemy! :-D
@Korneliusz
Twój step-by-step guide.

FYI:

1. Connect HDMI display and keyboard to TS-251A
2. Power-on NAS, and hit DEL to enter BIOS
3. Once entered to BIOS, go to the last tab and load default settings
(this is necessary to activate Intel Turbo Boost)
4. Exit BIOS with save changes and wait for QTS to start
5. Connet to your NAS by SSH
6. Download latest TVS-X71 firmware into public share, to do this execute in the shell:
Bash:
cd /share/Public
mkdir firmware && cd firmware
wget https://download.qnap.com/Storage/TS-X71/TVS-X71_20200512-4.4.2.1302.zip
firmware=$(ls -1 | grep TVS-X71 | head -n 1 | sed 's/.img//g')
unzip ${firmware}.zip

7. Now decrypt QNAP firmware using this command:
Bash:
PC1 d QNAPNASVERSION4 ${firmware}.img ${firmware}.tgz

8. Unpack decrypted image file:
Bash:
mkdir -p content
tar -zxf ${firmware}.tgz -C ./content/
Now you have unpacked kernel images files bzImage, bzImage.sign & bzImage.cksum which are needed to replace.

9. In TS-251A kernel is: mmcblk0p2. We have to mount it...
Bash:
mkdir -p /mnt/boot
mount /dev/mmcblk0p2 /mnt/boot

10. Now its good idea to make a backup of bzImage* files
Bash:
mkdir -p /share/Public/firmware/kernel.bak
cp -af /mnt/boot/boot/bzImage /share/Public/firmware/kernel.bak/
cp -af /mnt/boot/boot/bzImage.sign /share/Public/firmware/kernel.bak/
cp -af /mnt/boot/boot/bzImage.cksum /share/Public/firmware/kernel.bak/
s3=$(cat /mnt/boot/boot/bzImage.cksum | awk '{print $3}')

11. Now we have to replace kernel files:
Bash:
cp -af /share/Public/firmware/content/bzImage /mnt/boot/boot/
cp -af /share/Public/firmware/content/bzImage.sign /mnt/boot/boot/
cp -af /share/Public/firmware/content/bzImage.cksum /mnt/boot/boot/

12. (not confirmed if this step is necessary)
Content of chksum file looks like this:
3869161986 7668576 /root/daily_build/64_06/4.4.2/Model/TS-X71/build/bzImage
Well, lets replace kernel image path to the stock one.
In my model it was:
/root/daily_build/64_30/4.4.2/Model/TS-X51A/build/bzImage

So let's do this that way:
Bash:
s1=$(cat /mnt/boot/boot/bzImage.cksum | awk '{print $1}')
s2=$(cat /mnt/boot/boot/bzImage.cksum | awk '{print $2}')
s3=$(cat /share/Public/firmware/kernel.bak/bzImage.cksum | awk '{print $3}')
echo "$s1 $s2 $s3" > /mnt/boot/boot/bzImage.cksum

13. Now let's umount boot and reboot the NAS
Bash:
umount /mnt/boot
reboot

14. Wait until NAS start again, and check CPU freq using this command:
Bash:
cat /proc/cpuinfo

It should report now 2.48GHz instead 1.6.GHz for TS-251A.
 

Użytkownicy znaleźli tą stronę używając tych słów:

  1. ts-251a
  2. ts-x51A
  3. ts-x51A bios
  4. bios ts-x51a
  5. ts-251a firmware