連続して大量のファイルにアクセスする場合、以下の理由により、アクセス処理に時間がかかり、システム全体の性能および動作に影響を与えることがあります。
使用しないページキャッシュが増えることで、新規のページキャッシュ獲得処理に時間がかかるため。
メタデータサーバの i ノードキャッシュ数を制限値以下に抑えるために解放処理が動作することで、システム負荷が増加するため。
以下の対処を検討してください。
処理の実行前後において、対象のファイルシステムを全ノードでアンマウントしてから、マウントすることで、GFS のすべてのキャッシュをクリアできます。これにより、使用しないキャッシュによる処理時間の増加を抑えることができます。
連続して大量のファイルにアクセスする処理を小さく分割して、sleep(3) などにより処理の間隔を空けることで、システム全体の負荷を軽減し、同時に動作する他の処理の性能を改善できることがあります。
全ノードで合計 5 万ファイル以上のファイルを連続してアクセスする場合は、GFS のページキャッシュを破棄するため、dentry キャッシュを定期的に解放することを推奨します。
使用していない dentry キャッシュの解放は、以下の手順で行います。
dentry キャッシュの使用状況を確認します。
# /bin/cat /proc/sys/fs/dentry-state <Enter> 411155 391674 45 0 0 0 |
2 番目の出力が、使用していない dentry キャッシュ数です。
使用していない dentry キャッシュを解放します。
# /bin/echo 2 > /proc/sys/vm/drop_caches <Enter> |
注意
コマンドの実行により、GFS 以外のキャッシュも解放されます。
参考
使用していない dentry キャッシュの確認および解放は、cron(8) を利用すると定期的に行うことができます。