Mój serwer ma 2 GB pamięci RAM i 120 GB SSD, a także kilka macierzy RAID do przechowywania. System operacyjny to Debian 8 (Linux 3.16).
Mam intensywną aplikację MySQL, która ma tmpdir
= /run/mysqld
, która jest tmpfs
konfigurowana przez Debian poprzez /etc/default/tmpfs
:
# Size limits. Please see tmpfs(5) for details on how to configure
# tmpfs size limits.
TMPFS_SIZE=40%VM
Kiedyś było 20%VM
to około 384 mln. Pobiegłem przeciwko kilku no space left on device
, więc zwiększyłem go do 40%VM
, ale nawet przy około 763 mln wciąż jest za mały.
Teraz powinienem dodać więcej pamięci RAM, ale z ciekawości chciałbym poznać ograniczenia tutaj.
/dev/sdd1
jest zamontowany,/
ma około 50 GB wolnego miejsca i jest dość szybki (Samsung 850 EVO SSD)/dev/sdd5
to moja partycja wymiany, jest to 3,7G (identyfikator typu fdisk to 82)TMPFS_SIZE
jest ustawiony na40%VM
, co/run
oznacza 763 M.
Teraz wiem, że tmpfs mogą się wymieniać, co jest dla mnie w porządku. Chcę, aby MySQL zapisywał w pamięci RAM, gdy tylko jest to możliwe, ale jeśli potrzebuje więcej pamięci, mogę pozwolić systemowi zamienić ją na SSD.
Czy w mojej konfiguracji mogę naciskać /run
na:
- 300 mln dużych? Tak. To był domyślny.
- 1,5 GB duży? Tak, próbowałem, MySQL zużył na nim do 1,3 GB, a system działał jak urok. Ale to wciąż mniej niż połowa pamięci fizycznej + partycja wymiany.
- 2,5 GB duży? To więcej niż pamięć fizyczna, ale mniej niż połowa pamięci fizycznej + moja partycja wymiany.
- 4 GB duży? To by ściśle pasowało do połowy fizycznej + zamiany
- Więcej? jak 10 GB? czy może wykorzystać wolne miejsce,
/
aby zamienić więcej?
Domyślam się, że podstawową zasadą bezpieczeństwa jest TMPFS_SIZE
nie większa niż zamiana + połowa pamięci fizycznej. Czy mogę wyjść poza to bez zwiększania partycji wymiany?
Ponadto, jest to możliwe do wprowadzenia 200%VM
w /etc/default/tmpfs
? Przeczytałem, tmpfs(5)
nie wiedząc, czy mogę w tym postawić> 100%.
Na koniec, czy powinienem to zrobić /etc/fstab
zamiast tego i nie dotykać /etc/default/tmpfs
?
(aby wiedzieć, że tylko to mount -o remount
zrobiłem, nie uruchomiłem jeszcze serwera)
Edycja: w przypadku ostatniego pytania wiem, że można go modyfikować /etc/fstab
(patrz cytat ze strony podręcznika man), jednak chciałem poznać najlepszą praktykę, ponieważ do /etc/default
tej pory niczego nie dotykałem .
Bardziej złożone opcje montowania mogą być wykorzystane przez utworzenie odpowiedniego wpisu w / etc / fstab.
Odpowiedzi:
Pomyślałem, że mogę to przetestować, więc pobiegłem:
Działa jak urok:
Więc trochę to wypełniłem:
Wynik:
System nadal działa. Zmniejszona dostępność wymiany, co dowodzi, że została użyta:
/run
Całkowita zamiana jest pomniejszona o kwotę pobraną przez
/run
.Testowałbym 10 GB na maszynie wirtualnej, ponieważ nie wiem, czy jądro odmówi ponownego podłączenia, czy po prostu zachowa się nieoczekiwanie.
Wciąż szukam prawdziwej odpowiedzi, ale pragmatyczny sposób pokazał, że działa.
źródło