Разберем ускорение работы с помощью tmpfs на примере Daggerfall Unity.
Для работы tmpfs необходимо включить следующие опции в ядре:
File systems --->
Pseudo filesystems --->
[*] Tmpfs virtual memory file system support (former shm fs)
[ ] Optional drivers
mkdir -p /home/oleg/Downloads/Daggerfall
chmod 777 /home/oleg/Downloads/Daggerfall
mkdir -p /home/oleg/dag_ram/
chmod 777 /home/oleg/dag_ram/
mkdir -p /home/oleg/.config/unity3d/Daggerfall\ Workshop
chmod 777 /home/oleg/.config/unity3d/Daggerfall\ Workshop
Для запуска используется следующий инит для системы инициализации sysvinit:
#!/bin/sh
case $1 in
start)
mount -t tmpfs -o size=560M tmpfs /home/oleg/Downloads/Daggerfall
cp -r /home/oleg/Downloads/Daggerfall_ram/* /home/oleg/Downloads/Daggerfall
mount -t tmpfs -o size=360M tmpfs /home/oleg/dag_ram/
cp -r /home/oleg/Downloads/dfu/* /home/oleg/dag_ram/
chown -R oleg /home/oleg/Downloads/Daggerfall
chown -R oleg /home/oleg/dag_ram/
mount -t tmpfs -o size=580M tmpfs /home/oleg/.config/unity3d/Daggerfall\ Workshop
cp -r /home/oleg/.config/unity3d/Daggerfall\ Workshop_ram/* /home/oleg/.config/unity3d/Daggerfall\ Workshop
chown -R oleg /home/oleg/.config/unity3d/Daggerfall\ Workshop
;;
stop)
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage: $0 [start|stop|restart]"
;;
esac
В начале происходит монтирование tmpfs в директорию на диске, по сути как создание RAM-диска, затем копирование файлов в эту директорию и как последний этап - выставление прав. Последний этап важен, если его пропустить, то игра может не работать, если ей надо будет писать в директорию. Всего копируются 3 директории:
1) директория с ресурсами Daggerfall (/home/oleg/Downloads/Daggerfall_ram/);
2) директория с движком Daggerfall Unity(/home/oleg/Downloads/dfu/);
3) директория c настройками и сохранениями (/home/oleg/.config/unity3d/Daggerfall\ Workshop_ram/).
Если не копировать папку сохранений в tmpfs, то будут задержки при загрузке сохранения. Но при этом сохранения сохранятся после перезагрузки. Таким образом, необходимо учитывать, что при сохранении сейвов строго в RAM, после перезагрузки они исчезнут.
Затем необходимо проверить полученный результат с помощью команды
df -h
Итоговый результат при использовании данных из статьи выглядит так:
tmpfs 560M 536M 25M 96% /home/oleg/Downloads/Daggerfall
tmpfs 360M 346M 15M 97% /home/oleg/dag_ram
tmpfs 580M 6.2M 574M 2% /home/oleg/.config/unity3d/Daggerfall Workshop