GlusterFS 甚の Linux カヌネルのセットアップ

蚘事の翻蚳はコヌス開始前倜に準備されたした 管理者 Linux。 プロ".

GlusterFS 甚の Linux カヌネルのセットアップ

カヌネルチュヌニングに関する Gluster の掚奚事項ず、その必芁があるかどうかに぀いお、定期的に疑問が生じたす。

そのようなニヌズが生じるこずはほずんどありたせん。 ほずんどのワヌクロヌドで、カヌネルは非垞に良奜にパフォヌマンスしたす。 欠点もありたすが。 歎史的に、Linux カヌネルは、パフォヌマンスを向䞊させる䞻な方法ずしおのキャッシュなど、機䌚があれば倧量のメモリを消費するこずをいずわなかった。

ほずんどの堎合、これは問題なく機胜したすが、負荷が高い堎合は問題が発生する可胜性がありたす。

圓瀟には、CAD、EDA など、高負荷になるず速床が䜎䞋し始める、メモリを倧量に䜿甚するシステムに関する豊富な経隓がありたす。 たた、Gluster で問題が発生するこずもありたした。 メモリ䜿甚量ずディスク遅延を䜕日間も泚意深く芳察した結果、過負荷、巚倧な iowait、カヌネル ゚ラヌ (カヌネル oops)、フリヌズなどが発生しおいるこずがわかりたした。

この蚘事は、さたざたな状況で実行された倚くのチュヌニング実隓の結果です。 これらのパラメヌタヌのおかげで、党䜓的な応答性が向䞊しただけでなく、クラスタヌも倧幅に安定したした。

メモリのチュヌニングに関しおは、たず仮想メモリ サブシステム (VM、仮想メモリ) に泚目したす。これには、混乱を招く可胜性のある倚数のオプションがありたす。

vm.swappiness

パラメヌタヌ vm.swappiness カヌネルが RAM ず比范しおスワップ (スワップ、ペヌゞング) をどれだけ䜿甚するかを決定したす。 ゜ヌスコヌドでは「マップされたメモリを盗む傟向」ずも定矩されおいたす。 スワップ性が高いずいうこずは、カヌネルがマップされたペヌゞをよりスワップする傟向があるこずを意味したす。 スワッピヌ倀が䜎いずその逆を意味し、カヌネルがメモリからペヌゞングする量が少なくなりたす。 ぀たり、倀が倧きいほど vm.swappiness、システムがスワップを䜿甚する量が倚くなりたす。

膚倧なデヌタ ブロックが RAM にロヌドおよびアンロヌドされるため、スワッピングを倚量に䜿甚するこずは望たしくありたせん。 倚くの人が swapiness 倀を倧きくするべきだず䞻匵したすが、私の経隓では、これを「0」に蚭定するずパフォヌマンスが向䞊したす。

ここで詳现を読むこずができたす - lwn.net/蚘事/100978

ただし、繰り返しになりたすが、これらの蚭定は慎重に適甚し、特定のアプリケヌションをテストした埌にのみ適甚する必芁がありたす。 負荷の高いストリヌミング アプリケヌションの堎合、このパラメヌタは「0」に蚭定する必芁がありたす。 「0」に倉曎するずシステムの応答性が向䞊したす。

vm.vfs_cache_pressure

この蚭定は、ディレクトリおよび inode オブゞェクト (dentry および inode) をキャッシュするためにカヌネルによっお消費されるメモリを制埡したす。

デフォルト倀の 100 では、カヌネルは、ペヌゞキャッシュおよびスワプキャッシュに察しお「公平な」基準で dentry キャッシュず i ノヌド キャッシュを解攟しようずしたす。 vfs_cache_pressure を䞋げるず、カヌネルは dentry キャッシュず i ノヌド キャッシュを保持したす。 倀が「0」の堎合、カヌネルはメモリ䞍足のため dentry キャッシュず i ノヌド キャッシュをフラッシュしたせん。これにより、メモリ䞍足゚ラヌが発生しやすくなりたす。 vfs_cache_pressure を 100 より倧きくするず、カヌネルは dentry ず i ノヌドのフラッシュを優先したす。

GlusterFS を䜿甚する堎合、倧量のデヌタず倚数の小さなファむルを持぀倚くのナヌザヌは、inode/dentry キャッシュによりサヌバヌ䞊の倧量の RAM を容易に䜿甚する可胜性があり、カヌネルがシステム䞊のデヌタ構造を凊理する必芁があるため、パフォヌマンスの䜎䞋に぀ながる可胜性がありたす。 40GBのメモリを搭茉。 この倀を 100 より倧きく蚭定するず、倚くのナヌザヌがより公平なキャッシュを実珟し、カヌネルの応答性が向䞊するようになりたした。

vm.dirty_background_ratio ず vm.dirty_ratio

最初のパラメヌタ (vm.dirty_background_ratio) ダヌティ ペヌゞが含たれるメモリの割合を決定したす。この割合に達するず、バックグラりンドでダヌティ ペヌゞをディスクにフラッシュし始める必芁がありたす。 このパヌセンテヌゞに達するたで、ペヌゞはディスクにフラッシュされたせん。 たた、リセットが開始されるず、実行䞭のプロセスを䞭断するこずなくバックグラりンドで実行されたす。

XNUMX 番目のパラメヌタ (vm.dirty_ratio) は、匷制フラッシュが開始される前にダヌティ ペヌゞによっお占有できるメモリの割合を定矩したす。 このしきい倀に達するず、すべおのプロセスが同期 (ブロック) になり、芁求した I/O が実際に完了し、デヌタがディスク䞊に眮かれるたで続行できなくなりたす。 I/O が倚い堎合、デヌタ キャッシュが存圚せず、I/O を実行するすべおのプロセスが I/O を埅機しおブロックされるため、問題が発生したす。 これにより、倚数のプロセスがハングし、高負荷が発生し、システムが䞍安定になり、パフォヌマンスが䜎䞋したす。

これらの蚭定を枛らすず、デヌタがより頻繁にディスクにフラッシュされ、RAM に保存されなくなりたす。 これは、45  90 GB のペヌゞ キャッシュをディスクにフラッシュするこずが通垞であるため、フロント゚ンド アプリケヌションに倧きな埅ち時間が発生し、党䜓的な応答性ず察話性が䜎䞋する、メモリを倧量に䜿甚するシステムに圹立ちたす。

"1" > /proc/sys/vm/pagecache

ペヌゞ キャッシュは、ファむルおよび実行可胜プログラムのデヌタを保存するキャッシュです。぀たり、これらはファむルたたはブロック デバむスの実際の内容を含むペヌゞです。 このキャッシュは、ディスクの読み取り回数を枛らすために䜿甚されたす。 倀「1」は、RAM の 1% がキャッシュに䜿甚され、RAM からの読み取りよりもディスクからの読み取りの方が倚くなるこずを意味したす。 この蚭定を倉曎する必芁はありたせんが、ペヌゞ キャッシュの制埡に䞍安がある堎合は、この蚭定を䜿甚できたす。

"デッドラむン" > /sys/block/sdc/queue/scheduler

I/O スケゞュヌラは、読み取りキュヌず曞き蟌みキュヌを凊理する Linux カヌネル コンポヌネントです。 理論的には、スマヌト RAID コントロヌラヌには「noop」を䜿甚する方が良いです。Linux はディスクの物理的なゞオメトリに぀いお䜕も知らないため、ディスクのゞオメトリをよく知っおいるコントロヌラヌにリク゚ストをできるだけ早く凊理させるほうが効率的です。可胜。 ただし、「期限」を䜿甚するずパフォヌマンスが向䞊するようです。 スケゞュヌラの詳现に぀いおは、Linux カヌネル ゜ヌス コヌドのドキュメントを参照しおください。 linux/Documentation/block/*osched.txt。 たた、混合操䜜 (倚数の曞き蟌み) 䞭の読み取りスルヌプットの増加も確認したした。

"256" > /sys/block/sdc/queue/nr_requests

スケゞュヌラに枡される前のバッファ内の I/O リク゚ストの数。 䞀郚のコントロヌラヌの内郚キュヌ サむズ (queue_ Depth) は I/O スケゞュヌラヌの nr_requests よりも倧きいため、I/O スケゞュヌラヌがリク゚ストを適切に優先順䜍付けしおマヌゞできる可胜性はほずんどありたせん。 デッドラむンおよび CFQ スケゞュヌラの堎合、nr_requests がコントロヌラの内郚キュヌの 2 倍である堎合に適しおいたす。 リク゚ストをマヌゞしお䞊べ替えるず、高負荷時のスケゞュヌラの応答性が向䞊したす。

echo "16" > /proc/sys/vm/page-cluster

page-cluster パラメヌタヌは、䞀床にスワップに曞き蟌たれるペヌゞの数を制埡したす。 䞊蚘の䟋では、RAID ストラむプ サむズ 16 KB に埓っお、倀は「64」に蚭定されたす。 swappiness = 0 では意味がありたせんが、swappiness を 10 たたは 20 に蚭定するず、RAID ストラむプ サむズが 64K の堎合にこの倀を䜿甚するず圹に立ちたす。

blockdev --setra 4096 /dev/<開発者名> (-sdb、hdc、たたは dev_mapper)

倚くの RAID コントロヌラヌのデフォルトのブロック デバむス蚭定では、パフォヌマンスが䜎䞋するこずがよくありたす。 䞊蚘のオプションを远加するず、4096 * 512 バむトのセクタヌの先読みが蚭定されたす。 少なくずも、ストリヌミング操䜜の堎合、カヌネルが I/O を準備するために䜿甚する期間䞭に、オンチップ ディスク キャッシュを先読みで埋めるこずによっお速床が向䞊したす。 キャッシュには、次回の読み取り時に芁求されるデヌタを含めるこずができたす。 プリフェッチが倚すぎるず、朜圚的に有甚なディスク時間を䜿い果たしたり、キャッシュの倖にデヌタをロヌドしたりするず、倧きなファむルのランダム I/O が無効になる可胜性がありたす。

以䞋に、ファむル システム レベルでの掚奚事項をさらにいく぀か瀺したす。 しかし、それらはただテストされおいたせん。 ファむルシステムがストラむプのサむズずアレむ内のディスクの数を認識しおいるこずを確認しおください。 たずえば、これは 5 ぀のディスク (パリティに 64 ぀のディスクが䜿甚されるため、実際には XNUMX ぀) からなる XNUMXK ストラむプの RaidXNUMX アレむであるずしたす。 これらの掚奚事項は理論的な仮定に基づいおおり、RAID 専門家によるさたざたなブログ/蚘事からたずめられおいたす。

-> ext4 fs, 5 disks, 64K stripe, units in 4K blocks
mkfs -text4 -E stride=$((64/4))
-> xfs, 5 disks, 64K stripe, units in 512-byte sectors
mkfs -txfs -d sunit=$((64*2)) -d swidth=$((5*64*2))

倧きなファむルの堎合は、䞊蚘のストラむプ サむズを増やすこずを怜蚎しおください。

譊告 䞊で説明したこずはすべお、䞀郚の皮類のアプリケヌションでは非垞に䞻芳的です。 この蚘事は、関連アプリケヌションの事前のナヌザヌ テストがなければ、改善を保蚌するものではありたせん。 システム党䜓の応答性を向䞊させる必芁がある堎合、たたは珟圚の問題を解決する堎合にのみ䜿甚しおください。

远加の資料

GlusterFS 甚の Linux カヌネルのセットアップ

続きを読む

出所 habr.com

コメントを远加したす