タグ

ioに関するUSAGI-WRPのブックマーク (5)

  • LinuxサーバーにSSDを使うための情報メモ - 気ままにインフラエンジニア

    Trim周りが最近どうなっているのか調べていましたが、それ以外の情報もまとまっているもののが案外少なかったので。 Trimをサーバーで使える? # Trimコマンドのサポートの確認(SSD側) hdparm -I /dev/sda | grep -i TRIM * Data Set Management TRIM supportedTrimコマンドの発行にはSSDをSATAのAHCIモードで接続することが必要。 RAIDカード経由でSSDを接続した場合、SSDを直接扱えないのでTrimは使えない。 2012/05現在、Trimに対応したRAIDカードはないようだ。 (ただし、ext4のdiscardコマンドは内部的にはSCSIデバイスに対してUNMAPコマンドが発行されるので、今後RAIDカード側がATAコマンドのTrimに再度変換してくれれば…?無理かな) 一般的な1Uサーバーではほとん

    LinuxサーバーにSSDを使うための情報メモ - 気ままにインフラエンジニア
  • I/Oスケジューラを使う。

    (参考)LinuxカーネルのI/Oスケジューラ http://memo.blogdns.net/iosched.html 以下、上の記事の抜粋です。特に「スケジューラの種別ってなんだっけ」レベルの方は'''下の記事を鵜呑みにせず、上のリンク先に訪問して全文をお読みください''。 (ここから抜粋) Linux カーネルの I/O スケジューラ 従来は Linux カーネルの I/O スケジューラは一種類だけで、コンパイル時に固定されていました。しかし Linux カーネル 2.6.10 からは複数の I/O スケジューラをデバイス毎に切り替えて、ハードウェアや用途に最適なスケジューラを選べるようになりました。カーネル 2.6.17 に組み込まれているスケジューラは下の四種類です。 noop anticipatory deadline cfq noop スケジューラ noop スケジューラはそ

  • Linux Input Subsystemの使い方

    Input Subsystemで何ができるのか Input Subsystemを使うと次のようなことができます。 キーボードやマウスをカスタマイズする 沢山(4つ以上)ボタンの付いたマウスや、マルチメディアキーの付いたキーボードを扱う 各種ゲーム用コントローラーを扱う 複数のマウスやキーボードからの入力を区別して扱う 仮想的なマウスやキーボードを作り、操作の自動化をする 必要なソフトウェア Input Subsystemを使うにはバージョン2.2以降のカーネルが必要となります。 ただ、Linux 2.4以前のInput SubsystemLinux 2.6のものととやや異なっており、2.6用に書いたコードはそのままでは動きません(運が良ければ動くこともある)。また、Linux 2.4のInput SubsystemはPS/2マウスが扱えなかったり、標準ドライバでの処理を抑制できないなど制

  • 非同期入出力の残念な現状

    asynchronous disk I/O | libtorrent blog Libtorrent experience - the poor state of async disk IO | Hacker News libtorrentの作者が、ディスクI/Oをパフォーマンスを向上させるために非同期I/Oを試した結果、どの環境でも残念なので、ブロックI/Oをスレッドプールで行う擬似非同期I/Oで実装したとブログを書いている。その問題について、Hacker Newsでも議論されている。 非同期I/Oは、話を聞くとたのもしい機能に思える。読み書きが完了するまでブロックせずに、完了したらOSが通知するという仕組みだ。 問題は、その実装がどの環境でも貧弱だという事だ。 環境というのは、主にOS側のことだ。多くのモダンなOSは非同期I/Oを提供している。特に著名なのがみっつある。 Linux A

  • Conduitを使ってみる - napthats’

    なんかIO扱ったりするのにConduitが熱いらしいので使ってみた。まだよく分かってないのでたぶん色々間違ってる。 ConduitではSourceから一つずつ流れてくるデータをConduitで流れ方を変えたり加工したりしてSinkに流す。SourceとSinkがファイルでConduitが無い場合(つまりファイルの中身を全部コピーするだけ)の例は以下の通り。 import Data.Conduit (($$)) import qualified Data.Conduit as C import qualified Data.Conduit.Binary as CB main :: IO () C.runResourceT $ CB.sourceFile "in.txt" $$ CB.sinkFile "out.txt" sourceFileでファイルの中身をまとめて流すSourceを作り、s

    Conduitを使ってみる - napthats’
  • 1