タグ

ブックマーク / yohei-a.hatenablog.jp (4)

  • "Reducing Memory Access Latency" が素晴らしすぎる - ablog

    Reducing Memory Access Latency by Satoru Moriya (Hitachi LTC) が素晴らしすぎるのでメモ。 まとめ vm.swappiness = 0 により、解放可能なページキャッシュがあるうちはプロセスのメモリ(anon page)をスワップアウトしないようにできる*1。 swappines=0 にしても 解放可能なページキャッシュがあるのにプロセスのメモリがスワップアウトされる問題があったが、この資料を書いた守屋さんのパッチが Kernel 3.5 にマージされている → mm: avoid swapping out with swappiness==0 extra_free_kbytes で kswapd がページ回収を開始する閾値を上げ、direct reclaim が発生しにくくできる Kernel 3.2 以降、direct rec

    "Reducing Memory Access Latency" が素晴らしすぎる - ablog
    yyamano
    yyamano 2015/09/23
  • gettimeofday(2) は VDSO によりユーザー空間で実行される - ablog

    gettimeofday(2) はシステムコールなので、大量に発行すると%sysが上がると思っていたが、VDSOという仕組みでユーザー空間で実行されるので%userが上がるらしい。時刻取得みたいなちょっとした処理でシステムコールを発行してコンテキストスイッチするのって無駄が多いなって思ってたけど、そこはちゃんと考えられているんですね。 多くのアプリケーション負荷 (特にデータベースおよび財務サービスアプリケーション) は gettimeofday または類似の時間機能コールを非常に頻繁に実行します。 このコールの効率性を最適化すると、 大きな利点があります。 VDSO (Virtual Dynamic Shared Object) は、 ユーザースペースのアプリケーションがシステムコールよりも少ないオーバーヘッドで一部のカーネルアクションを実行できるようにする共有ライブラリです。 多くの場

    gettimeofday(2) は VDSO によりユーザー空間で実行される - ablog
    yyamano
    yyamano 2015/09/01
  • SSDにしたのでI/Oスケジューラを noop に変更してみた - ablog

    PC の HDD を SSD に変更したので、I/Oスケジューラを noop に変更してみた。 SSD は HDD のようにシーク(目的のレコードが記憶されたシリンダにヘッドを移動)したり、サーチ(目的のセクタの先頭がヘッドの位置に来るのを待つ)したり、物理的な動きはない。なので、OSのI/OスケジューラでソートなんかせずにI/Oリクエストを渡してくれたほうが速いとという話だと思う。 簡単に noop が速いことを検証した上で、noop に変更した。 cfq I/Oスケジューラを cfq に設定する [root@yazekats-linux queue]# echo cfq > /sys/block/sda/queue/scheduler [root@yazekats-linux queue]# cat /sys/block/sda/queue/scheduler noop deadlin

    SSDにしたのでI/Oスケジューラを noop に変更してみた - ablog
    yyamano
    yyamano 2015/08/12
  • カーネルパラメータ net.core.[rw]mem_{default,max} の意味を考えてみた - ablog

    インストールの前提条件の作業を手動で行う方法 を見ると、カーネルパラメータ net.core.[rw]mem_{default,max} の推奨値が以下の通り記載されている。 カーネルパラメータ Byte 人に優しく net.core.rmem_default 262144 256KB net.core.rmem_max 4194304 4MB net.core.wmem_default 262144 256KB net.core.wmem_max 1048576 1MB 上記のカーネルパラメータがソケットを使用するアプリケーションにどのような影響を及ぼすか仮説を書いてみる。 仮説 net.core.[rw]mem_{default,max} は TCP と UDP の送受信バッファのデフォルトサイズと最大サイズを決める。 net.ipv4.tcp_[rw]mem が設定されている場合、T

    カーネルパラメータ net.core.[rw]mem_{default,max} の意味を考えてみた - ablog
  • 1