Czy dobrą praktyką jest tworzenie katalogu w /run/shm
(dawniej /dev/shm
) i używanie go jako katalogu tymczasowego dla aplikacji?
Tło: Piszę testy czarnej skrzynki dla programu, który robi wiele rzeczy z plikami i katalogami. Dla każdego testu tworzę dużo plików i katalogów, a następnie uruchamiam program, a następnie tworzę oczekiwany zestaw plików i katalogów, a następnie uruchamiam diff do porównania. Mam teraz około 40 testów, których uruchomienie zajmuje już ponad 2 sekundy. Mając nadzieję na przyspieszenie, chcę uruchomić testy w katalogu na jakimś ramdysku.
Badając dysk RAM, natknąłem się na pytanie z odpowiedzią, że można w nim utworzyć katalog /dev/shm
i używać go jak katalogu tymczasowego. Po dokładniejszych badaniach natknąłem się na stronę wiki z debiana, stwierdzając, że użycie błędu jest błędem /dev/shm
. Powinienem użyć shm_*
funkcji. Niestety shm_*
funkcje wydają się niedostępne do użycia w skrypcie powłoki.
Teraz jestem zmieszany. Czy można używać /run/shm
(wcześniej /dev/shm
) jak katalogu tymczasowego?
/tmp
jest to bardziej semantyczne. Jeśli Twoi użytkownicy mają wystarczającą ilość pamięci RAM, aby użyć /dev/shm
plików tymczasowych do przyspieszenia, to tam go zainstalują. Ale jeśli nie mają wystarczającej ilości pamięci RAM, a zamontowanie jej tam spowalnia komputer, zmuszając wszystkie procesy do korzystania z plików wymiany, wówczas zachowają pamięć RAM na ważniejsze rzeczy i wykorzystają zwykłe miejsce na dysku dla /tmp
systemu plików. Innymi słowy, /tmp
jest bardziej strojony.
/tmp
do pamięci współużytkowanej.