、スラブは、同じハードウェア・キャッシュ・ラインは、多くの異なるブロックをマップすることを私たちは、第2章から知っている のLinuxスラブ・アロケータとキャッシュパフォーマンス
を絵画やRAM。この の章では、同じサイズのオブジェクトがキャッシュ内の同じオフセットに格納されることもわかりました。 異なるスラブ内で同じオフセットを持つオブジェクトは、比較的高い確率で、同じキャッシュ行に にマップされます。したがって、キャッシュハードウェアは、2つのオブジェクト を同じキャッシュラインから異なるRAMロケーションに前後に転送し、他のキャッシュラインは十分に活用されないメモリサイクルを浪費することがあります。 スラブアロケータは、スラブカラーリングと呼ばれるポリシーによって、この不快なキャッシュ動作を減らそうとします。different スラブには、色と呼ばれる任意の値が割り当てられます。
(1)私はスラブ着色が解決しようとする問題を理解することができません。通常のプロセスがデータにアクセスするときに、データがキャッシュになく、キャッシュミスが発生した場合、データは、パフォーマンスを向上させるためにプロセスがアクセスしようとするデータの周辺アドレスからのデータと共にキャッシュにフェッチされます。どのように同じ特定のキャッシュラインがスワップし続けるような状況が発生する可能性がありますか?プロセスが2つの異なるメモリ領域のメモリ領域内の同じオフセットで2つの異なるデータアドレスにアクセスする確率は非常に低い。キャッシュポリシーは、通常、LRU、ランダムなどのいくつかのアジェンダに従ってスワップされるラインを選択します。アクセスされるアドレスの最下位ビットのマッチに応じてラインを追い出すようなポリシーはありません。
(2)私が先頭と最初のオブジェクトの異なるオフセットと異なるスラブでの結果とスラブの端から空きバイトを取るスラブ着色は、キャッシュスワッピング問題を解決する方法を理解することができませんか。 [SOLVED]
小さな調査の後は、私は私の質問への答えを見つけたと信じています。回答が投稿されました。
私があなたを正しく理解しているかどうかを見てみましょう。 slab0スライスアドレス0x0,0x20,0x40などを検討してください。slab1スライスアドレスは0x8,0x28,0x48などです。単純なキャッシュラインを使用しても、2つのアドレスで同じ結果が得られないので、キャッシュラインを使用しないでください。 – user2162550
キャッシュポリシーとキャッシュ構成について読んだ後、答えがキャッシュの基礎とどのように一致するかは分かりません。スワップされるように選択されたラインは、LRUなどの多くの可能なポリシーの1つに従って選択され、アドレスの最下位ビットの一致によらず、そのようなポリシーを見つけることができませんでした。 – user2162550
@ user2162550: "false sharing"とキャッシュを調べます。 –