私のプロジェクトには、ファイルの作成後にディスクに保存できない状況があるため、これら2つのスクリプトをバックグラウンドに追加しました。システムのパフォーマンスに影響しますか?
デバイスが再起動またはシャットダウンされるのではなく、予期しない停電が頻繁に発生することがあります。異常な停電が発生する1秒前にファイルに記録されたデータもディスクに保存できることを望んでいますが、実際の状況はディスクに保存できないことが多いです。
私の機器には無停電電源装置システム(UPS)があります。私はC++でプログラミングをしています。
自動同期.sh:
#!/bin/sh
while true; do
sync
sleep 1
done
autoCacheFree.sh:
#!/bin/sh
drop_caches() {
echo "Drop caches."
sync
echo 1 > /proc/sys/vm/drop_caches &
return 0
}
while true; do
sleep 600
drop_caches
done
/etc/fstab:
#device mount-point type options dump fsck order
/dev/mmcblk3p3 /dobot ext3 defaults 0 0
/dev/mmcblk3p6 /dobot/userdata ext3 defaults 0 0
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
var /dev tmpfs defaults 0 0
ramfs /dev ramfs defaults 0 0
答え1
autoSync.sh
sync
毎秒1回実行されます。つまり、保留中のすべてのディスク書き込みが毎秒ディスクに強制されます。これがどのように影響するかは、デフォルトのストレージによって異なりますが、すべての場合に書き込まれるデータの量が増えます。通常の操作では、多くの書き込みが最終的に不要になります(後で同じデータを扱う書き込みのために超過または置換されるため)。迅速に削除される一時ファイルへの書き込み)をsync
定期的に実行すると、不要な書き込みを防ぐのにかかる時間が短縮されます。
autoCacheFree.sh
sync
10分ごとに実行され、ページキャッシュを消去します。効果はsync
前述したものと同じです。ページキャッシュをクリアすると、すべての後続の読み取りをプライマリストレージから読み取る必要があり、これはパフォーマンスにも影響します。
根本的な問題を解決する方が良いでしょう。 「ファイルを作成した後にディスクに保存することはできません」とは何を意味するのかはわかりませんが、編集された質問からプログラムを作成していて、データがファイルにあるかどうかを確認したいと思います。書き込みはできるだけ早くディスクに保存されます。正しい方法は電話することです。fsync
各書き込みの後に書き込みに注意を払うと、これらの書き込みとディスクの書き込みがパフォーマンスに与える影響はスクリプトよりはるかに小さくなります。
また、ループを停止する方が簡単なので、これがwhile sleep ...; do ...; done
より良いことに注意してください(キャンセルするとループが終了します)。while true; do ...; sleep ...; done
sleep