skillup

技術ブログ

サーバー・ネットワーク

OSキャッシュの仕組み

投稿日:

大規模サービス技術入門のつづきです。

主にOSのキャッシュメモリについてです。

  • メモリとディスクの速度差は10万倍~100万倍
  • いかにディスクへのアクセスを減らすかがポイント
  • OSは各プロセスにメモリの番地(物理アドレス)を直接は渡さず、代わりに論理アドレスを渡す(プロセスがメモリの管理をする必要をなくすため)
  • ディスクから読みだされたデータはメモリ上に置かれ、一旦おかれるとしばらくは解放されない(ページキャッシュ)
  • Linuxではデータを常にキャッシュをしようとするので、sar -r でみるとあまり使っていないサーバーでも%memusedに50%ぐらいは割り当たっている
  • メモリを増やす→キャッシュに大量のデータを取り込める→その分IO負荷が減る(数値的にはiowaitの割合がへる)
  • データ規模 < 物理メモリならすべてのデータをメモリ上にキャッシュできる
  • メモリにデータが乗り切らないときにはじめて、複数のサーバーによる負荷分散を考える(DBの場合、単純にこうはいかない)
  • 単純に台数を増やしてもキャッシュは増えない(キャッシュできない部分までコピーしてしまうことになるため)
  • キャッシュの容量を増やすには局所化(アクセスのパターンごとに担当するサーバーを分ける)などの工夫が必要

-サーバー・ネットワーク
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

PHPMailerに関して(PHPのメール送信)

PHPのMailライブラリに関して。 今までmb_send_mailとかで誤魔化してましたが、以下のようにライブラリで送るケースのサンプル。 https://github.com/umanari145 …

no image

vagrant 複数ホストを起動

ansbileを使おうと思ったんですが、ansibleはホスト1→ホスト2という構成になっているため、2台のホストがないと使えません。 MACであればローカル環境からいけますし、Windowsでもcy …

no image

vagrant share

実はvagrantを使って仮想環境を一時的ではありますが、webから見ることができます。 1 まずはhttps://atlas.hashicorp.com/account/newにてアカウント登録。そ …

no image

docker-composeに関して

dockerで環境構築する場合は基本的に下記のような流れをとると思います。 それぞれの出来合いのイメージをpull イメージに様々なライブラリをインストール それらをコンテナとして起動&連携 …

no image

serverspecによるサーバー自動テスト

最近は管理しているサーバーが多いのと、構成管理ツール(Ansible)なんかをちょくちょく使ってますが、ちゃんと入っているかどうかを確認するのはそれなりに大変だったりします。 が、構成管理ツール自体も …