Jakiś czas temu stwierdziłem, że na komputerach z 16 lub więcej gigabajtami RAMu bez sensu jest robić na dysku przestrzeń wymiany popularnie zwaną swapem. Uznałem to za marnotrawstwo miejsca na dysku. Okazało się jednak, że byłem w błędzie, ld potrafi jednak przy linkowaniu większych projektów zeżreć dużo więcej niż 16GB RAMu. Wtedy w mojej głowie pojawiło się pytanie co z tym zrobić, przecież nie będę przeinstalowywać systemu żeby zrobić sobie partycje na swapa specjalnie dla jednego zadania.
Okazuje się, że rozwiązanie tego problemu jest bardzo proste. Swap nie musi być partycją, może być po prostu plikiem.
Trzeba utwórzyć obraz dysku:
sudo dd if=/dev/zero of=swapfile.bin bs=1024 count=16777216
Powyższa komenda utworzy plik o rozmiarze 16GB. Następnie musimy sformatować jako przestrzeń wymiany:
mkswap swapfile.bin
Do swapa dostęp powinien mieć tylko użytkownik root więc wypada zmienić uprawnienia:
chmod 600 swapfile.bin
Na koniec musimy uruchomić swapa:
swapon swapfile.bin
Po ostatniej komendzie w programach typu top czy w monitorze systemu swap powinien być widoczny.
Aby powyższa zmiana była na stałe należy zmodyfikować plik /etc/fstab poprzez dodanie:
/ścieżka/do/swapfile.bin swap swap defaults 0 0
Jak się okazuje nawet przy RAMie o przyzwoitym rozmiarze swap bywa potrzebny i to nie trzeba robić nic nadzwyczajnego, wystarczy kompilacja nieco większego projektu.