Pokazywanie postów oznaczonych etykietą x86_64. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą x86_64. Pokaż wszystkie posty

sobota, 28 marca 2009

kernel: PAE vs. x86_64

Jakiś czas temu, na liście pld-devel-pl@lists.pld-linux.org zagościła dyskusja, o domyślnym włączeniu obsługi PAE (Physical Address Extension) w kernelu dystrybucyjnym w Th. Pomijając fakt, że wiele modeli procesorów nie obsługuje PAE, to pewne wątpliwości wprowadza fakt, że obłsuga PAE spowalnia działanie pamięci, postanowiłem więc zrobić mały test.

W maszynie testowej siedzi Intel C2D E8400, 4GiB RAM-u, kernel 2.6.28.9. Procedura testowa:

- hdparm -T /dev/sda
- pomiar czasu obliczania sumy sha512 dla pliku o wielkości 431MiB
- program nbench-byte-2.2.2

i686 + PAE

- hdparm: 7056MB/s
- sha512sum: 18,3s
- nbench:
* MEMORY INDEX: 18,7
* INTEGER INDEX: 20,6
* FLOATING-POINT INDEX: 38,8

x86_64

- hdparm: 7625MB/s
- sha512sum: 16,9s
- nbench:
* MEMORY INDEX: 18,7
* INTEGER INDEX: 20,5
* FLOATING-POINT INDEX: 38,9

Różnica w szybkości działania pamięci zmierzona programem hdparm wynosi ~8% na korzyść kernela 64bit, co jest niemałą wartością. Widać to też dla programu sha512sum. W teście nbench różnica jest minimalna, jednak biorąc pod uwagę, że program ten używa bardzo mało pamięci, więc cache procesora niweluje różnicę w szybkości.

Nie ma sensu używania opcji PAE, zwłaszcza jeśli samemu musimy budować kernel, lepiej już użyć kernela z archa x68_64, zwłaszcza że w PLD jest to dosyć proste. Zaczynamy od dodania do pliku do pliku /etc/rpm/platform wiersza:
x86_64-[^-]*-[Ll]inux(-gnu)?

teraz dodajemy źródło do Poldka, które nazwiemy sobie th64, do pliku /etc/poldek/repos.d/pld.conf dodajemy następujące wiersze:
[source]
type = %{_type}
name = th64
path = %{_prefix}/PLD/x86_64/RPMS/
auto = no

Uruchamiany Poldka:
$ poldek -n th64

Teraz tylko pozostaje przeinstalować kernel
install -F kernel* --reinstall

i reboot