コンピュータのメモリ容量を超えるサイズのプログラムを実行する必要がある場合、最近のオペレーティングシステム(OS)のほとんどはスワップ処理と呼ばれる手法を用いる。これは、メモリ内データの大部分を一時的にハードディスクに格納しておき、必要なデータだけを物理メモリ空間に持ってくるというものだ。本稿では、Linuxシステムにおけるスワップ処理の効率化とスワップ処理サブシステムのパフォーマンス最適化につながるテクニックを紹介する。 Linuxは、物理メモリの領域をページという単位に分割して処理する。スワップ処理とは、ハードディスク上にあらかじめ設定した空間(これをスワップ空間と呼ぶ)にページ単位でメモリ上のデータをコピーし、そのページのメモリ領域を解放する処理をいう。物理メモリとスワップ空間を合わせた容量が、仮想メモリとして利用可能になる。 スワップ処理が必要になる主な理由は2つある。1つは、物理
What Every Programmer Should Know About Memory Ulrich Drepper Red Hat, Inc. drepper@redhat.com November 21, 2007 Abstract As CPU cores become both faster and more numerous, the limiting factor for most programs is now, and will be for some time, memory access. Hardware designers have come up with ever more sophisticated memory handling and acceleration techniques–such as CPU caches–but these canno
FedoraCoreやCentOS系の遅いPerlのパッチの件 3月くらいにkazeburoさんがメモしてた遅くなる話。 極端に遅くなる処理のベンチ例みたいなのがほしいかな何やったら遅くなるかわかりました。 すごく正確に検証してるわけでも無いのですが、use overloadしたパッケージをblessするとき。 例えばURIやDateTime等のnew時。 この時にかかるCPUコストが激しく高いため、全体的にアプリケーションがもっさりと動く事になってました。 しかもFC4系列のディストリビューション全体で注意した方が良いかもです。 家はCentOS 4.4の perl 5.8.8-4.el4e1 のRPMで該当のパッチが混入していました。 書いたアプリが見込みよりもパフォーマンスが悪くて、最後の最後にまさかと思ってoverloadしてるモジュールを疑っていたらkazeburoさんにナイス指
TheC10kProblem - 「C10K問題」(クライアント1万台問題)とは、ハードウェアの性能上は問題がなくても、あまりにもクライアントの数が多くなるとサーバがパンクする問題のこと 目次 この文書について C10K 問題 関連サイト まず読むべき本 I/O フレームワーク I/O 戦略 1. 各スレッドが複数のクライアントを受け付ける. そしてノンブロッキング I/O と レベル・トリガ型の完了通知を利用する. 伝統的な select() 伝統的な poll() /dev/poll kqueue() 2. 各スレッドが複数のクライアントを受け付ける. そしてノンブロッキング I/O と 変更型の完了通知(readiness change notification)を利用する. kqueue() epoll リアルタイム・シグナル fd 単位のシグナル (Signal-per-fd)
最近、2.0な方々の間でTwitterが話題になってる。で、そのTwitter自体も面白いんだけど、TwitterについてDHHがブログを書いてRailsでの大規模サイト構築が話題になってるのが面白い。 Twitter trouble (Loud Thinking - DHH) まずTwitterの高負荷について言及、Twitterは11,000リクエスト/秒 の高負荷で問題となっているらしい。 そしてスケーラビリティの鍵はDB分割だ、と言っている。Railsは基本一つのDBを見るのでスケーラビリティの問題になる (確かにWebサーバはロードバランサがあればいくらでもスケールするしね、Sessionの共有だけ気を付ければ) ↓ Dr Nic » Magic Multi-Connections: A “facility in Rails to talk to more than o
The domain radicalbehavior.com is for sale. The domain name (without content) is available for sale by its owner through Sedo's Domain Marketplace. Any offer you submit is binding for 7 days. All quoted prices are final prices. The domain radicalbehavior.com is for sale. Make an offer on this domain You are not the highest bidder!
Posted by nanki Mon, 12 Mar 2007 05:14:00 GMT Rubyコード中にCのコードを埋め込めるRubyInlineを使って、 ボトルネックとなっているメソッドを置き換える。 # rubyinline.rb def benchmark s = "a" * 10000 test = Test.new t = Time.now 1000.times{test.string_xor(s, s)} Time.now - t end class Test def string_xor(str1, str2) result = str1.clone str1.length.times do |i| result[i] ^= str2[i] end result end end b1 = benchmark begin require 'inline' class T
Content: 1. 紹介 prelinkとは何ですか? それは何の役に立つのですか? ほとんどの一般的なアプリケーションは共有ライブラリを使用します。 これらの共有ライブラリは起動時にメモリーに読み込まれる必要があります。 また各種シンボルの参照が解決される必要があります。 多くの小さなプログラムにとってこのダイナミックリンクはとても素早く行われます。 しかしC++で書かれたプログラムやたくさんのライブラリに依存するプログラムにとってダイナミックリンクはかなりの時間がかかります。 大部分のシステムでは、ライブラリはそんなに変更されることがありません。そしてプログラムが起動されるときにリンクされるプログラムは毎回同じです。prelinkはlink情報を取り出し、それを実行ファイルに格納します。つまりprelinkを行ないます。リンカーのためにglibc内のld-linux.soが必要で
調べごとをしたので blog に書いて理解を深めようのコーナーです。長文です。 Linux でシステム負荷を見る場合にお世話になるのが top や sar (sysstat パッケージに同梱されてるコマンド) などのツールです。 top ではシステム統計のスナップショットを見ることができます。今システムがどういう状態かなーというときは top が便利。 top - 08:16:54 up 3 days, 14:43, 6 users, load average: 0.18, 0.07, 0.03 Tasks: 43 total, 2 running, 41 sleeping, 0 stopped, 0 zombie Cpu(s): 18.2% us, 0.0% sy, 0.0% ni, 81.8% id, 0.0% wa, 0.0% hi, 0.0% si一方の sar では10分ごとのシ
Water transfer printing is one of the simplest procedures that anyone may do, and it will help create beautiful pictures that have a softer side to them. Anyone who is looking for a better way to print art or fabrics must ensure that they are using the water transfer printing process to ensure the pictures come out beautifully. This article explains how someone may take advantage of the water tran
http://developer.amd.com/downloads.aspx AMD のサイトには、パフォーマンスアナライザ CodeAnalyst というのがあります。 たぶんできることは VTune や Mac の Shark と同じなのですが、 ひとつそれらと違う特徴として、パイプラインシミュレーションの解析結果の視覚化ができます。 下記は、レイトレーシングのレイと三角形の交差判定部分のコードの Athlon X2 上でのパイプライン結果です。 fld でのロード待ちで、fcomip がストールしているのが見て取れます。 よってこの部分を最適化できれば高速化が期待できることが分かります。 現在の CPU はアウトオブオーダー実行、マイクロコード実行など複雑なことを行うようになっているので、 このパイプライン結果にその結果が含まれていたとしてもいなかったとしても、 そこか
BootchartはLinuxシステムの起動時におけるシステム負荷を時間軸に沿ってグラフ化するソフトだ。プロセスの起動に伴うCPUやハード・ディスクの使用率を経過時間ごとに表示するので,Linuxの仕組みを理解するのに役立つ。起動時のボトルネックを把握する助けにもなる。 Bootchartの開発は,Fedora Core開発者用のメーリング・リストへのある書き込みから始まった。「Linuxシステムの起動時間を短縮するために,ブート時に何が起こっているのかを一覧できるチャートが欲しい」というものだ。 Bootchartを導入したLinuxシステムを起動すると,通常最初に起動するプロセス「Init」に先駆けて,Bootchartが起動するようになる。Bootchartは,Initの動作を監視し,/procファイル・システムに出力される各種システム情報を取得する。 このようにして,あるプロセスA
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く