skillup

技術ブログ

サーバー・ネットワーク

OSキャッシュの仕組み

投稿日:

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

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

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

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

執筆者:


comment

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

関連記事

no image

ロードバランサーの構築(dockerを例に)

以前から興味のあったロードバランサーをdockerで構築。 Contents1 ロードバランサーとは?1.1 定義1.2 メリット1.2.1 負荷軽減1.2.2 可用性の向上1.2.3 拡張性の向上1 …

no image

キャッシュについて(主にmemcachedを中心に)

Webサービスのパフォーマンス向上で目に見えて効果があることの一つがDBへのアクセス回数を減らすことです。 それはSQLを発行する回数を少なくするなど、普段からのプログラムの書き方ももちろん大事なので …

no image

Let’s Encryptによるhttps化

以前下記の記事で、herokuでLet’s Encryptを使おうとしたのですが、結局使うことがありませんでした。 herokuでのLet’s Encrypt設定 どこかで使おうか・・と考 …

no image

MariaDBインストール

CentOS7からはyumでmysqlをインストールするとMariaDBがディフォルトになるようです。 せっかくなので、これを機にMariaDBを使ってみました。といってもMySQLとほとんど一緒でし …

no image

mod_aliasに関して

同一ドメインでパスによってルートディレクトを分けたい時。 この場合、apacheの設定ファイルをいじることになります。 一般的にはhttpd.confではなく*.confと言った設定ファイルを使い、エ …

アーカイブ