Serwery Power to systemy wieloprocesorowe zbudowane w oparciu o architekturę NUMA (Non-Uniform Memory Access). W tej architekturze każdy procesor ma bezpośrednio podłączoną część pamięci RAM. Może również uzyskać dostęp do całej pamięci serwera (w tym pamięci dołączonej do innych procesorów). Procesor ma najszybszy dostęp do pamięci bezpośrednio do niego podłączonej (pamięć lokalna), podczas gdy dostęp do pamięci podłączonej do innych procesorów trwa dłużej (pamięć nielokalna).
Typy pamięci w serwerach Power
W serwerach Power wyróżniamy trzy rodzaje pamięci (wymienione od najszybszego do najwolniejszego dostępu):
- Lokalna (Local) – pamięć podłączona bezpośrednio do procesora
- Bliska (Near) – pamięć podłączona do innego procesora w ramach tego samego CEC
- Daleka (Far) – pamięć podłączona do procesora w innym CEC.
W przypadku serwerów skalowalnych, takich jak E980/1080, dostępne są wszystkie trzy typy pamięci. Jednak w mniejszych serwerach, takich jak S922, obecna jest tylko pamięć lokalna i daleka.
Optymalna sytuacja występuje, gdy LPAR wykorzystuje pamięć bezpośrednio przydzieloną do procesora, na którym działa. Kiedy LPAR jest tworzony, hypervisor próbuje przydzielić zasoby w najbardziej efektywny sposób, ale w niektórych sytuacjach nie zawsze jest to możliwe. Nawet LPAR, który miał optymalnie przydzieloną pamięć RAM, może zacząć działać nieoptymalnie w czasie swojego działania.
Operacje wykonywane na serwerze, takie jak:
- LPM
- Tworzenie LPARa
- DLPAR
mogą mieć wpływ na przypisanie pamięci do LPAR i sprawić, że będzie on działał nieoptymalnie.
Dynamic Platform Optimizer (DPO)
Poczynając od serwerów POWER7, hypervisor obsługuje funkcję Dynamic Platform Optimizer (DPO), która umożliwia optymalizację powiązania procesora/pamięci. Funkcja DPO jest inicjowana z konsoli HMC, a jej uruchomienie zmienia powiązanie procesora/pamięci partycji logicznej.
Podczas działania DPO należy pamiętać, że niektóre funkcje wirtualizacji mogą zostać tymczasowo zablokowane, takie jak:
- LPM
- DLPAR
Jeśli wymagane są jakiekolwiek zablokowane operacje, proces DPO może zostać przerwany.
Podczas uruchamiania DPO należy pamiętać, że zmiana powiązania procesora/pamięci może tymczasowo wpłynąć na wydajność z powodu relokacji pamięci.
Dwa kroki do optymalizacji pamięci
Optymalizacja pamięci wykonywana jest w dwóch etapach:
1. Planowanie:
Planowanie obejmuje ocenę bieżącej optymalizacji pamięci i określenie, czy można wprowadzić ulepszenia.
Aby sprawdzić aktualny poziom optymalizacji pamięci, uruchom następujące polecenie:
lsmemopt -m <SYSTEM> -r <sys/lpar> -o currscore
Na przykład, aby sprawdzić bieżący stan pamięci systemu:
lsmemopt -m Power-LAB1 -r sys -o currscore
curr_sys_score=89
Aby uzyskać bardziej szczegółowe informacje na poziomie LPARa, użyj:
admin@hmclab:~> lsmemopt -m Power-LAB1 -r lpar -o currscore
lpar_name=VIOS 1 LAB1,lpar_id=1,curr_lpar_score=100
lpar_name=VIOS 2 LAB1,lpar_id=2,curr_lpar_score=100
lpar_name=TEST AIX1,lpar_id=3,curr_lpar_score=100
lpar_name=TEST AIX2,lpar_id=4,curr_lpar_score=45
lpar_name=AIX 71,lpar_id=6,curr_lpar_score=100
lpar_name=AIX 73,lpar_id=7,curr_lpar_score=100
lpar_name=AIX LKU TEST,lpar_id=9,curr_lpar_score=20
lpar_name=AIX 72,lpar_id=12,curr_lpar_score=100
lpar_name=AIX 72 N2,lpar_id=25,curr_lpar_score=90
Wynik pokaże wartość DPO – „curr_lpar_score”, gdzie 0 to najgorszy wynik, a 100 to najlepszy.
Aby oszacować, czy powiązanie pamięci można poprawić, użyj:
lsmemopt -m <SYSTEM> -r lpar -o calcscore
gdzie „predicted_lpar_score” oznacza przewidywaną wartość DPO
admin@hmclab:~> lsmemopt -m Power-LAB1 -r lpar -o calcscore
lpar_name=VIOS 1 LAB1,lpar_id=1,curr_lpar_score=100,predicted_lpar_score=100
lpar_name=VIOS 2 LAB1,lpar_id=2,curr_lpar_score=100,predicted_lpar_score=100
lpar_name=TEST AIX1,lpar_id=3,curr_lpar_score=100,predicted_lpar_score=100
lpar_name=TEST AIX2,lpar_id=4,curr_lpar_score=45,predicted_lpar_score=100
lpar_name=AIX 71,lpar_id=6,curr_lpar_score=100,predicted_lpar_score=100
lpar_name=AIX 73,lpar_id=7,curr_lpar_score=100,predicted_lpar_score=100
lpar_name=AIX LKU TEST,lpar_id=9,curr_lpar_score=20,predicted_lpar_score=100
lpar_name=AIX 72,lpar_id=12,curr_lpar_score=100,predicted_lpar_score=100
lpar_name=AIX 72 N2,lpar_id=25,curr_lpar_score=90,predicted_lpar_score=100
2. Optymalizacja:
Po zakończeniu fazy planowania następnym krokiem jest faktyczna optymalizacja pamięci.
Aby rozpocząć proces optymalizacji, należy użyć następującego polecenia:
optmem -m <SYSTEM> -o start -t affinity
Można monitorować postępy procesu za pomocą polecenie:
lsmemopt -m <SYSTEM>
admin@hmclab:~> lsmemopt -m Power-LAB1
in_progress=1,status=In progress,type=affinity,opt_id=110,progress=0,requested_lpar_ids=none,protected_lpar_ids=none,impacted_lpar_ids=none
admin@hmclab:~> lsmemopt -m Power-LAB1
in_progress=1,status=In progress,type=affinity,opt_id=110,progress=39,requested_lpar_ids=none,protected_lpar_ids=none,impacted_lpar_ids=none
admin@hmclab:~> lsmemopt -m Power-LAB1
in_progress=0,status=Finished,type=affinity,opt_id=10,progress=100,requested_lpar_ids=none,protected_lpar_ids=none,"impacted_lpar_names=VIOS 1 LAB1,VIOS 2 LAB1,TEST AIX1,TEST AIX2,AIX 71,AIX 73,AIX LKU TEST,AIX 72,AIX 72 N2","impacted_lpar_ids=1,2,3,4,6,7,9,12,25"
Aby zatrzymać optymalizację, użyj opcji:
optmem -m <SYSTEM> -o stop
Podczas estymacji pomocne mogą być następujące przełączniki:
–id – Określa identyfikator jednej lub więcej partycji, które mają być traktowane priorytetowo podczas optymalizacji.
–xid – określa identyfikator jednej lub więcej partycji, które mają zostać wykluczone z optymalizacji i pozostać chronione.
Czasami osiągnięcie optymalnych wyników wymaga wykonania kilku obliczeń w celu znalezienia właściwej kombinacji –id i –xid.
Podczas optymalizacji należy pamiętać, że wyłączone LPAR-y są również optymalizowane. Dlatego można wykluczyć je z procesu optymalizacji, co może pomóc skrócić czas jego trwania.
Po zakończeniu optymalizacji należy ponownie sprawdzić bieżący stan pamięci, aby upewnić się, że optymalizacja zakończyła się powodzeniem. Czasami optymalizacja może zostać przeprowadzona, ale wyniki różnią się od wyliczeń.
Dobre praktyki w zakresie optymalizacji pamięci
Optymalizacja pamięci w serwerach Power jest dynamiczna i powinna być monitorowana.
Aby osiągnąć najlepsze wyniki, należy wziąć pod uwagę poniższe wskazówki:
- Optymalizacja wyłączonych LPAR-ów: Nawet jeśli wyłączone LPAR-y są wykluczone z optymalizacji, należy pamiętać, że mogą one nadal przechowywać zasoby, blokując je dla innych. Rozważ wyczyszczenie zasobów z wyłączonych LPAR-ów, aby zapewnić optymalne wykorzystanie zasobów.
- Używaj DPO: Uruchom dynamiczny optymalizator platformy, aby zoptymalizować powiązanie pamięci i procesora.
- Monitoruj DPO: Stale monitoruj optymalizację pamięci systemowej.