jakie są ogromne strony w Linuksie?

Poznaj ogromne strony w Linuksie. Zrozum, co to jest ogromne strony, jak go skonfigurować, jak sprawdzić aktualny stan i jak go wyłączyć.

HugePages w Linuksie

w tym artykule omówimy szczegóły dotyczące ogromnych stron, dzięki czemu będziesz mógł odpowiedzieć: czym są ogromne strony w Linuksie? Jak włączyć / wyłączyć ogromne strony? Jak określić ogromną wartość strony? w Linuksie jak RHEL6, RHEL7, Ubuntu itp.

Zacznijmy od ogromnych podstaw stron.

co to jest ogromna strona w Linuksie?

Ogromne strony są pomocne w zarządzaniu pamięcią wirtualną w systemie Linux. Jak sama nazwa wskazuje, pomagają zarządzać dużymi stronami w pamięci oprócz standardowego rozmiaru strony 4KB. Możesz zdefiniować tak ogromny jak rozmiar strony 1GB za pomocą ogromnych stron.

podczas uruchamiania systemu rezerwujesz część pamięci z ogromnymi stronami dla swojej aplikacji. Ta część pamięci, tj. pamięć zajmowana przez ogromne strony, nigdy nie jest zamieniana z pamięci. Pozostanie tam, dopóki nie zmienisz konfiguracji. Zwiększa to wydajność aplikacji w dużym stopniu, podobnie jak Oracle database z dość dużymi wymaganiami dotyczącymi pamięci.

po co używać ogromnej strony?

w zarządzaniu pamięcią wirtualną jądro utrzymuje tabelę, w której mapuje adres pamięci wirtualnej na adres fizyczny. Dla każdej transakcji strony jądro musi załadować powiązane mapowanie. Jeśli masz strony o małym rozmiarze, musisz załadować więcej stron wynikowego jądra, aby załadować więcej tabel mapowania. Zmniejsza to wydajność.

używanie ogromnych stron oznacza, że będziesz potrzebował mniej stron. Zmniejsza to w znacznym stopniu liczbę tabel mapowania do załadowania przez jądro. Zwiększa to wydajność na poziomie jądra, co ostatecznie przynosi korzyści aplikacji.

w skrócie, poprzez włączenie ogromnych stron, system ma mniej tabel stron do radzenia sobie, a tym samym mniej narzutu na dostęp/utrzymanie ich!

Jak skonfigurować ogromne strony?

uruchom poniższe polecenie, aby sprawdzić aktualne szczegóły dużych stron.

root@kerneltalks # grep Huge /proc/meminfoAnonHugePages: 0 kBHugePages_Total: 0HugePages_Free: 0HugePages_Rsvd: 0HugePages_Surp: 0Hugepagesize: 2048 kB

na powyższym wyjściu można zobaczyć rozmiar jednej strony to 2 MBHugepagesize I łącznie 0 stron w systemieHugePages_Total. Ten ogromny rozmiar strony można zwiększyć z 2MB do max 1GB.

Uruchom poniższy skrypt, aby dowiedzieć się, ile ogromnych stron potrzebuje obecnie Twój system. Skrypt pochodzi z Oracle i można go znaleźć.

#!/bin/bash## hugepages_settings.sh## Linux bash script to compute values for the# recommended HugePages/HugeTLB configuration## Note: This script does calculation for all shared memory# segments available when the script is run, no matter it# is an Oracle RDBMS shared memory segment or not.# Check for the kernel versionKERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`# Find out the HugePage sizeHPG_SZ=`grep Hugepagesize /proc/meminfo | awk {'print $2'}`# Start from 1 pages to be on the safe side and guarantee 1 free HugePageNUM_PG=1# Cumulative number of pages required to handle the running shared memory segmentsfor SEG_BYTES in `ipcs -m | awk {'print $5'} | grep "*"`do MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q` if ; then NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q` fidone# Finish with resultscase $KERN in '2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`; echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;; '2.6' | '3.8' | '3.10' | '4.1' ) echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;; *) echo "Unrecognized kernel version $KERN. Exiting." ;;esac# End

Możesz zapisać go w/tmp jako hugepages_settings.sh, a następnie uruchomić go jak poniżej :

root@kerneltalks # sh /tmp/hugepages_settings.shRecommended setting: vm.nr_hugepages = 124

Wyjście będzie podobne do pewnej liczby, jak pokazano na powyższym wyjściu próbki.

oznacza to, że Twój system potrzebuje 124 ogromnych stron po 2MB każdy! Jeśli Ustawiłeś 4MB jako rozmiar strony, wynik byłby 62. Rozumiesz o co chodzi, prawda?

Configure hugepages in kernel

teraz ostatnia część to skonfigurowanie wyżej podanego parametru jądra i przeładowanie go. Dodaj poniżej wartość w /etc/sysctl.conf I przeładuj konfigurację, wydając polecenie sysctl -p.

vm.nr_hugepages=126

zauważ, że dodaliśmy 2 dodatkowe strony w jądrze, ponieważ chcemy zachować kilka stron wolnych od rzeczywistej wymaganej liczby.

teraz ogromne strony zostały skonfigurowane w jądrze, ale aby umożliwić Twojej aplikacji Korzystanie z nich, musisz również zwiększyć limity pamięci. Nowy limit pamięci powinien wynosić 126 stron X 2 MB każda = 252 MB czyli 258048 KB.

musisz edytować poniższe ustawienia w/etc/security/limits.conf

soft memlock 258048 hard memlock 258048

czasami te ustawienia są konfigurowane w plikach specyficznych dla aplikacji, takich jak Oracle DB its w/etc/security/limits.d/99-grid-oracle-limits.conf

To wszystko! Możesz ponownie uruchomić aplikację, aby skorzystać z tych nowych ogromnych stron.

Jak wyłączyć hugepages?

HugePages są domyślnie włączone. Użyj poniższego polecenia, aby sprawdzić aktualny stan ogromnych stron.

root@kerneltalks # cat /sys/kernel/mm/transparent_hugepage/enabled madvise never

flaga na wyjściu pokazuje, że hugepages są włączone w systemie.

dla systemów opartych na RedHat ścieżka do pliku to/sys/kernel/mm/redhat_transparent_hugepage/enabled

Jeśli chcesz wyłączyć ogromne strony, Dodajtransparent_hugepage=never na końcukernel wiersz w/etc/grub.conf I uruchom ponownie system.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.