X


2ch特化型サーバ・ロケーション構築作戦 Part53

■ このスレッドは過去ログ倉庫に格納されています
NGNG
2ch特化型サーバ・ロケーション構築作戦のスレッドです。

・2ちゃんねるのサーバロケーション、PIEに関する関連作業・調整事項
・DNS登録・変更関連の各種作業や調整事項
・2ちゃんねるのサーバで採用しているOS、FreeBSDに関する情報・調整事項
・各種作戦・プロジェクトとの連携、プロジェクト間の連携

等を取り扱います。

前スレ:2ch特化型サーバ・ロケーション構築作戦 Part52
http://qb5.2ch.net/test/read.cgi/operate/1277651499/
2010/06/30(水) 01:57:58ID:UroyeBm60
決勝と選挙って同じ日だね
2010/06/30(水) 01:58:20ID:UZaH/JzIP
ハヤブサ鯖お疲れさまっした
2010/06/30(水) 01:58:33ID:D6n/bETP0
>>31
3割も余裕あるのか〜
鴎も出来る子だね!
49root▲▲ ★
垢版 |
2010/06/30(水) 01:59:08ID:???0
さてと。

今日のhayabusaは負けですが、次につながる負け方でした。
まだやれることがありそうです。

kamomeはすばらしかったです。大爆発をきっちり受け止めました。
もう安心して見ていられるかんじです。
50root▲▲ ★
垢版 |
2010/06/30(水) 01:59:40ID:???0
>>45
トップページもですね。
あと、read.cgiというか、普通のブラウザ率も。
2010/06/30(水) 02:00:07ID:Db6zG2aB0
ハヤブサよく頑張ったさようなら
2010/06/30(水) 02:00:39ID:i3nsU7R70
なんでほんださんかっけーが本田△になるんだよう
53動け動けウゴウゴ2ちゃんねる
垢版 |
2010/06/30(水) 02:02:25ID:1c3I4Aps0
次の超弩級巨漢鰯マダァ〜(・∀・ )っ/凵⌒☆チンチン
2010/06/30(水) 02:02:49ID:D6n/bETP0
おいちゃんもrootタンも日本代表も乙でした!

>>52
△→さんかっけい→さんかっけー
・・・あとはわかるな?
2010/06/30(水) 02:03:03ID:tcSocmtl0
こうなったらSSDのRAID0構成しかないな
500MB/sは出るだろw
2010/06/30(水) 02:03:55ID:9qAK3gWc0
RAID0じゃ意味ないだろ、ランダムは遅くなるし
むしろX25-Eを・・・容量足りないのかな
2010/06/30(水) 02:04:10ID:UjvxdgpN0
>>55
でるの?
2010/06/30(水) 02:06:27ID:tcSocmtl0
>>57
こんなレポートもあるよ
ttp://bbs.kakaku.com/bbs/K0000079560/SortID=10990835/
2010/06/30(水) 02:06:34ID:+xXIpRXUP
このあとのけいおん遅れテロップ挿入だけで
はやにゃんが突然死するとは誰が予想した
だろうか
2010/06/30(水) 02:06:38ID:zViZpQeGP
>SSDのRAID0
とりあえず優越感を味わえる。
2010/06/30(水) 02:06:57ID:p1xfgdxYP
SSDをRAIDするとベンチの結果は早くなるけど実際あまり変わらないと聞くが…
でも尋常じゃない負荷がかかるからやっぱり効果あるのかな
62root▲▲ ★
垢版 |
2010/06/30(水) 02:07:12ID:???0
まず logbuffer ですね。

とりあえず、思いつく手は3つか。

・rtprio で優先度を speedy_backend よりもさらに上にする
→ 試す価値あり、明日昼にでも

・logbuffer プログラムを、SunOSさんにさらに改良してもらう
→ マルチスレッド化とか、バッファを大きめにとるとか

・logbuffer がログをとる先を、SSDからHDDに変更する
→ 設定自体は比較的簡単のはず (symlinkを一つ変えるだけのはず)
2010/06/30(水) 02:07:53ID:NKU4dpFA0
>>58
OSもファイルシステムも違うからあまり比較にならん
64root▲▲ ★
垢版 |
2010/06/30(水) 02:08:05ID:???0
あとは、

・httpd の最大数が多すぎるかもしれない
→ logbuffer のはけがよくなれば、少なくできるかもしれない

かな。
2010/06/30(水) 02:08:07ID:7wEaW4M/0
>>56
・ライトキャッシュが増える。
・ストライプサイズを調整できるのでSSDの書き込み時のオーバーヘッドを最小限にできる。
きちんとしたアレイコントローラを使えばパフォーマンス向上は期待できる。
2010/06/30(水) 02:09:04ID:6bbVn6J3P
>>59


67動け動けウゴウゴ2ちゃんねる
垢版 |
2010/06/30(水) 02:09:26ID:bC+IRwbV0
おいチョン公、これなんで表ざたになんねえんだろうなぁ。笑い
キモブサが調子こいてんじゃねえぞ鼻糞
http://love6.2ch.net/test/read.cgi/male/1205246585/l50

161 :Mr.名無しさん:2008/03/12(水) 00:09:02
>>157
明日天皇を射殺するわ

291 :Mr.名無しさん:2008/03/12(水) 00:23:58
レイプは健康に良い

464 :Mr.名無しさん:2008/03/12(水) 00:38:26
日本人のクソのような教育水準じゃ、民主的に天皇制をなくすことなんて無理だよ

376 :Mr.名無しさん:2008/03/12(水) 00:30:04
秋篠宮殿下御夫妻が生き残って皇太子は政府専用機に乗ってる時に特攻されて殉職すれば日本は幸せになる
ロイヤルニートが皇后なんて有り合えない!

552 :Mr.名無しさん:2008/03/12(水) 00:44:09
浮浪者殺すのと、天皇殺すのは罪の重さが違うの?
68root▲▲ ★
垢版 |
2010/06/30(水) 02:10:20ID:???0
あとは、

・OSを8.1Rにし、従来のataドライバではなくahciドライバで動かす
→ OSインストール時にそのように設定する必要があります

ahciドライバにする場合にインストール時にやることは基本的に、
emの差し替えにちょっと近いのり。
ここの過去ログにもあったはず。
2010/06/30(水) 02:11:26ID:fqLxlSyj0
>44
誰かがやってくれるかもしれないけど、やってくれないかもしれないからな
つか専門用語ばかりなので書いている本人が理解していないのが困りもの
       ∧_∧
  ∧__∧ (´<_` ) 無駄な労力だな、兄者
  ( ´_ゝ`)/  .⌒i まぁ特筆すべき件については、最終的に誰かが書くと思うけどね
_(__つ/ ̄ ̄ ̄/i |_
  \/___/ ヽ⊃
2010/06/30(水) 02:11:36ID:tcSocmtl0
>>63
そりゃそうだけどそこのレポートでRAIDカード使った人だと
1801MB/sも出てるんだよね
まぁ故障率も上がるし、緊急用ではあるかな
2010/06/30(水) 02:12:43ID:UjvxdgpN0
>>58
先に書かれたけここで出るかは微妙ですね。
出たら面白いとは思うのは確かですけど。

>>64
入口の受け入れ減らして、中での混雑の解消はかるって感じですか。
2010/06/30(水) 02:14:23ID:IzpedbfV0
フーリガンよろしく、サッカー関連で運営板のあちこちに殴り込みがwww
2010/06/30(水) 02:14:28ID:NKU4dpFA0
>>70
それはRAIDカードのRAMキャッシュに書いてる時の速度
2010/06/30(水) 02:16:33ID:MQVtzzTM0
>>56
64GBありゃ足りるんじゃね?
ランダム足りないなら8.1RのNCQ待つのも手。
2010/06/30(水) 02:17:07ID:QgaJ09aK0
>>67
そのままコピペってダメじゃなかったか?
2010/06/30(水) 02:19:06ID:6bbVn6J3P
>>67
コピペも同罪って知ってた?
77root▲▲ ★
垢版 |
2010/06/30(水) 02:24:21ID:???0
http://hayabusa-1gbpsgraph.maido3.com/kamome/

前半
ハーフタイム
後半
延長前半
延長後半
PK
試合終了

が、全てわかってしまう件。
2010/06/30(水) 02:24:30ID:iFb9RRrJ0
logbuffer ですが,現状では読み込みは aio_read() になってますが
書き込みは元のままの処理 (fputs(), fflush()) です.
とりあえず入力(httpd からみると出力)を詰まらせないという意図だったんですが,
書き込みが何らかの要因で詰まると結局詰まるということになるんで,
書き込みも aio_write() にするというのは考えられますね.

あとマルチスレッド化ですが,

1. 同期I/O(=ブロックする可能性がある)処理を別スレッドにやらせる
2. 同じ処理を並列的に実行する

のいずれかであれば有効なんですが,非同期I/Oなら 1. の観点では不要となり,
一方 logbuffer は入り口も出口もそれぞれ1ヶ所ずつなので
2. のように並列化する要素もなかなか見あたらない気がします.
2010/06/30(水) 02:26:37ID:7iy0viuf0
直接何も手伝えないのがもどかしいですが、運営の方々マジGJです(`Д´)ゞ

>>69
分かりやすいし面白いから密かに楽しみにしてるよwいつも乙w
80root▲▲ ★
垢版 |
2010/06/30(水) 02:27:14ID:???0
>>78
> 書き込みが何らかの要因で詰まると結局詰まるということになるんで,
> 書き込みも aio_write() にするというのは考えられますね.

おー。
ぜひぜひ。

> あとマルチスレッド化ですが,
> 1. 同期I/O(=ブロックする可能性がある)処理を別スレッドにやらせる
> 2. 同じ処理を並列的に実行する
> のいずれかであれば有効なんですが,非同期I/Oなら 1. の観点では不要となり,
> 一方 logbuffer は入り口も出口もそれぞれ1ヶ所ずつなので
> 2. のように並列化する要素もなかなか見あたらない気がします.

そうですね。非常に冷静な見解です。

bbsdやmatdで使っているマルチスレッド化とはちょっと違うかんじですか。
2010/06/30(水) 02:36:10ID:YtxKG4n/0?2BP(1245)
logbufferってローテート用のプログラムだから
mod_log_configに吸収させてみるとか。
82root▲▲ ★
垢版 |
2010/06/30(水) 02:56:18ID:???0
>>81
それも、ちょっと考えてました。

ただ、httpdにモノリシックに組み込んでしまうよりは、
別プロセスの方が、rtprioで柔軟に活入れできるとか、
aio(4)を使って効率化を図れるとかのメリットがあるのかも。
2010/06/30(水) 02:58:50ID:2BuAm1m00
バーボンは止めたまま?
84root▲▲ ★
垢版 |
2010/06/30(水) 03:32:26ID:???0
そんなわけで、有意義な戦いですた。

rock54やBBQ/BBMサーバの切替は、
量産型新tigerを使って、色々うまく詰め込むかんじなのかなと。
85root▲▲ ★
垢版 |
2010/06/30(水) 03:35:08ID:???0
で、明日もふつーに仕事なので、
そろそろねるです。

「けいおん」の盛り上がりがかわいく見える。
86root▲▲ ★
垢版 |
2010/06/30(水) 03:45:38ID:???0
>>68
これか。

2ch特化型サーバ・ロケーション構築作戦 Part49
http://qb5.2ch.net/test/read.cgi/operate/1276953456/290

新tigerサーバの作りこみの際には、これをぜひに。>なかのひと

ということで、おやすみなさいです。
2010/06/30(水) 04:58:44ID:lAIpYbbH0
FreeBSDのバージョン上げるなら、7.2から追加された
superpagesも試してみると良いかも。
アプリによっては30%高速化するとかなんとか。
http://gihyo.jp/admin/serial/01/fb72/0001
88root▲▲ ★
垢版 |
2010/06/30(水) 07:22:58ID:???0
>>87
vm.pmap.pg_ps_enabled (superpages) は、
8.1R 入れればデフォルトでオンになってますね。
確か 8.0R からだったかな。

%uname -n
tiger3546.maido3.com
%uname -r
8.1-RC1
%sysctl vm.pmap.pg_ps_enabled
vm.pmap.pg_ps_enabled: 1

BSDのそういった新機能は、

・誰かが新機能を開発する

・標準カーネルに新機能がデフォルトoffで組み込まれる
→ 人柱さんが機能を使えるようになる
→ 勇気あるチャレンジャーが人柱をし、負荷かけてサーバ落としまくる
→ 新機能がデバッグされ、調整され、洗練される

・次のバージョンのOSでは、新機能がデフォルトonになる

ばんじゃーいAA略

というかんじで開発されているようです。
2010/06/30(水) 09:32:49ID:nf/QgEi30
試合前に言ってた「気分だけでも書き込めれば吸い込まれても幸せ」だけどさ
ニコニコ動画は生放送で立ち見とか席の場所とかですでにそれに近いことをやってる気がする
すなわち視聴者はみんなのコメを見てるわけでもないしコメを視聴者とか生主に見てもらえてもいない場合がある
でも叫ぶばっかりで会話が成立しないのは利用者としては結構悲しい

つことで、書き込みを吸い込ますより遅延反映とかの方がありがたい
たとえばレス番だけ確保してキタ━(゚∀゚)━ !!!!!とかで埋めておいてあとから書き換えるとか
負荷軽減なら専ブラ用にP2Pでdat取得するシステム開発とか
2010/06/30(水) 09:57:01ID:BDns7F+z0
>>89
P2Pは問答無用で遮断ISPがあるこの状況で…
2010/06/30(水) 10:00:11ID:RwFWja8W0
遮断されないISPの分軽くなれば十分じゃね
2010/06/30(水) 10:07:07ID:BmRjj8jK0
まぁ、回線が許すならSAKURAの専用サーバあたりで運営できそうだしな。本来は500kB程度のdatのやり取りだし。
2010/06/30(水) 10:07:40ID:fiugWOXf0
SSDの性能をどうにかしたいなら…やっぱりNCQかねえ。
NCQ有効化が無理なら無しでもそこそこやれる東芝あたりに乗り換えとか。
2010/06/30(水) 10:08:45ID:KdtVVOTb0
P2Pとかそこまでやるなら雪だるま構成にした方が早いんじゃ
95む@出先
垢版 |
2010/06/30(水) 10:57:00ID:rT0kLg8K0
がらにもなく、今たまたま読んだこれに感動した。

http://kamome.2ch.net/test/read.cgi/mnewsplus/1277856323/14

14 :名無しさん@恐縮です:2010/06/30(水) 09:09:58 ID:JAUiiJLi0
「大切なのは批評家ではない。強い人間がどのようにつまづいた
かを指摘する人物、または、ある偉業をなした者について、もっと
うまくできたかどうかを分析する人物ではない。すべての功績は、
実際に闘技場にいた人物のものだ。顔を泥と汗で汚した者、勇敢
に戦った者、間違いを犯し、そこから何度も立ち上がった者、偉大
な情熱、偉大な献身を知る者、価値ある大義のために身を捧げる
者、そして、最高の結果は目標の高度な達成という勝利であり、最
悪の結果は、仮に失敗しても、少なくとも最善を尽くして失敗したの
であり、あの勝利も敗北も知らない、寒々とした臆病な魂と、同じ
場所に立つことはないと知っている者だ」

テオドア・ルーズベルト
96む@出先
垢版 |
2010/06/30(水) 11:36:45ID:rT0kLg8K0
>>62
> ・rtprio で優先度を speedy_backend よりもさらに上にする
> → 試す価値あり、明日昼にでも

TransferLog "| exec /usr/sbin/rtprio 31 /usr/local/sbin/logbuffer"

TransferLog "| exec /usr/sbin/rtprio 23 /usr/local/sbin/logbuffer"

を、今日にでも投入しようかと。
97む@出先
垢版 |
2010/06/30(水) 12:10:28ID:rT0kLg8K0
ところで、

>>78
>書き込みが何らかの要因で詰まると結局詰まるということになるんで,
>書き込みも aio_write() にするというのは考えられますね.

にからんで、

http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=aio_write&dir=jpman-8.1.2%2Fman§=0
をちょっと読んでいたんですが、

これって、bbs.cgi (というかPerl)でもうまく使えたりするのかしら。
98む@出先
垢版 |
2010/06/30(水) 12:11:56ID:rT0kLg8K0
>>97 ポイント部分を引用

> aio_write() システムコールによって、呼び出し元プロセスは iocb->aio_buf が
> 指すバッファから記述子 iocb->aio_fildes に iocb->aio_nbytes を書き込めま
> す。書み込み要求が記述子への待ち行列に入れられてしまうと、ただちに呼び出
> しは戻ります。呼び出しが戻った時点で書み込みは完了している可能性も完了し
> ていない可能性もあります。無効な引数のためなどにより要求を待ち行列に入れ
> られない場合は、呼び出しは要求を待ち行列に入れずに戻ります。
99む@出先
垢版 |
2010/06/30(水) 12:23:57ID:rT0kLg8K0
http://1978th.net/tech/promenade.cgi?id=60

> ここで重要なのは、追記モードで開いたファイルの場合、
> aio_writeを用いた順番と書き込まれるデータの順番が同じになるのが
> 保証されることです。

dat方面でちょっと心配していたことは、どうやら起こらないようだ。

あと、以前SunOSさんが指摘されていた、

http://search.cpan.org/~mlehmann/IO-AIO-3.65/AIO.pm

In this version, a number of threads are started that execute your
requests and signal their completion.

You don't need thread support in perl, and the threads created by
this module will not be visible to perl. In the future, this module
might make use of the native aio functions available on many operating
systems.

However, they are often not well-supported or restricted
(GNU/Linux doesn't allow them on normal files currently, for example),
and they would only support aio_read and aio_write, so the remaining
functionality would have to be implemented using threads anyway.

という話もあるのか。
100む@出先
垢版 |
2010/06/30(水) 12:43:56ID:rT0kLg8K0
あとは大技として、

require 'sys/syscall.ph'; して、
SYS_aio_write とかを使うというのも、考えられるかな。

これだと、モジュールの追加作業がとりあえず要らないし、
if文入れて、hayabusaとkamomeだけまずは特別処理にすることもできそうだ。
101む@出先
垢版 |
2010/06/30(水) 12:55:09ID:rT0kLg8K0
よくまとまっていそうなものが見つかったので、
あとで読んでみよう。

非同期I/O 概説
http://lab.klab.org/files/alm/20070806/aio.pdf
2010/06/30(水) 13:36:00ID:mKN21kEm0
これ以上if文を増やしたくないって言ってなかったっけ
103む@出先
垢版 |
2010/06/30(水) 13:38:07ID:rT0kLg8K0
>>102
もちろんうまくいくようなら、全サーバに適用→そのif文廃止 かと。
2010/06/30(水) 13:38:47ID:uFp/rH6k0
if文を増やしたくない理由が、負荷低減にあるんだと思うから
負荷を低減できるようなif文ならむしろ増やしたいだろうさ
2010/06/30(水) 13:42:13ID:fFtMIKJP0
>>95
「実際に動いた奴>越えられない壁>外野で騒いでいるだけの奴」ですね。
サッカーに限らず普遍的な言葉ですよね。

そういや
「困っている人を自分は無関係と目を背けながらも、他人の助け方には文句をつけることで
 社会的責任を果たしていると勘違いするような人間はネットでよく見かける。」

なんてつぶやきを某代理人が引用してたのを思い出した。

ある意味>>88の人柱さん達にも通じる話ですよね。
「百聞は一見に如かず」も元は「百聞は一見に如かず、百見は一試に如かず」だったそうです。
2010/06/30(水) 13:45:43ID:31aYbLwb0
ランクづけするならここでやるな
見ている人が不快になる
2010/06/30(水) 13:48:07ID:r2HiHSCFO
>>89
「キター」は一体感を楽しみたい方もいると思いますが
自分は審判の判定が変だと思った時「他にもそう思った人いるかな?」で実況をロムる事が多いので
やはり皆さんの書き込みは表示していただいたほうが有難いです
2010/06/30(水) 13:51:00ID:fFtMIKJP0
>>106
勘違いしてないか?
生産的に助言を与える事を誰も否定はしていないじゃん。
2010/06/30(水) 13:58:19ID:ZIIBrbEM0
なんだ、政治コピペかw
110ちきちーた ★
垢版 |
2010/06/30(水) 14:59:35ID:???0
バーボン起動 @hayabusa
2010/06/30(水) 15:17:59ID:irFItAAdP
>>46
F1イギリスGPもあるよ。これは大したことないかもだが重なるとなると
2010/06/30(水) 16:32:12ID:9fr08b5R0
例によってトリップつきで。

これから >>96 申請します。 @ hayabusa
httpd再起動入ります。
2010/06/30(水) 16:35:00ID:HFBigSPb0
↓落ちた落ちたーのレスまみれー
2010/06/30(水) 16:37:08ID:ilp39dWJ0
>>110
マジか・・
2010/06/30(水) 16:40:45ID:T1y+z6XC0

          ノ´⌒ヽ,,
       γ⌒´      ヽ,
      // ""⌒⌒"\  )
      i /   ⌒  ⌒ ヽ )
      !゙   (へ)` ´(へ)i/
      | /// (__人_)//|  ボーナス出たお
       \__ `ー'_/
       /       ヽ
116む@出先
垢版 |
2010/06/30(水) 16:46:30ID:rT0kLg8K0
36252 root 1 -8 r23 9944K 1868K aiospn 7 0:01 0.00% logbuffer

設定されたもよりです。

確認の返事をメールで出すのが今難しいので、以下同文。>なかのひと
117む@出先
垢版 |
2010/06/30(水) 16:48:33ID:rT0kLg8K0
tiger3552、こんなの出ていた。

Approaching the limit on PV entries, consider increasing either the vm.pmap.shpgperproc or the vm.pmap.pv_entry_max sysctl.
Approaching the limit on PV entries, consider increasing either the vm.pmap.shpgperproc or the vm.pmap.pv_entry_max sysctl.
Approaching the limit on PV entries, consider increasing either the vm.pmap.shpgperproc or the vm.pmap.pv_entry_max sysctl.
Approaching the limit on PV entries, consider increasing either the vm.pmap.shpgperproc or the vm.pmap.pv_entry_max sysctl.
Approaching the limit on PV entries, consider increasing either the vm.pmap.shpgperproc or the vm.pmap.pv_entry_max sysctl.
Approaching the limit on PV entries, consider increasing either the vm.pmap.shpgperproc or the vm.pmap.pv_entry_max sysctl.
118む@出先
垢版 |
2010/06/30(水) 16:53:32ID:rT0kLg8K0
>>117 は昨日の「落ちていたとき」だと思われ。
システムの中の値が足りなくなったと。

これは確か「スペシャルセッティング1」で、
loader.conf の中で既に増やしていた気がするので、
システムが言ってきているとおりに値を増やすのがいいのか、
あるいはそうではないのか、まずは調べてみる方向で。
119む@出先
垢版 |
2010/06/30(水) 17:00:08ID:rT0kLg8K0
デフォルトは今200で、

「スペシャルセッティング1」ではこの値を、
メモリ4GBytes用のチューニングとして、既に 2048 に増やしてあると。

で、もっと増やす必要がありそうと。
2010/06/30(水) 17:03:00ID:iFb9RRrJ0
aio_write() 入れてみました @logbuffer
121む@出先
垢版 |
2010/06/30(水) 17:03:43ID:rT0kLg8K0
/usr/src/sys/amd64/amd64/pmap.c かな。

pmap.c は前にも読んでみた記憶があるソースだけど、
あとで改めて読んでみるか。
122む@出先
垢版 |
2010/06/30(水) 17:05:26ID:rT0kLg8K0
>>120
おー、あとで www2 でためしてみます。
2010/06/30(水) 17:07:22ID:uFp/rH6k0
pv_entry_max = (shpgperproc * maxproc) + (((((availmem - 1) * 2) + 1) / pagesize) - firstpage)

でしたっけ?
124む@出先
垢版 |
2010/06/30(水) 17:17:52ID:rT0kLg8K0
>>120
さらっとソース diff しました。

華麗なるダブルバッファ方式、というかんじに見えますた。
昔あった edd というやつを思い出しました。とてもいいふいんき(なぜか(りゃ)にみえます。

あと、
-#define MAX_AIO_READ (2*1024*1024)
+#define MAX_AIO_READ (4*1024*1024)

というのもしぶいです。
2010/06/30(水) 17:19:54ID:j01S+nKh0
本当にhayabusaは、ギリギリ(アウト?)な場面を経験するごとに、
むむむさんが、「こんなこともあろうかと」と現れて、
対策を実装していくんだな。
なんか、実機が手元にないところも探査機に似ている。
126む@出先
垢版 |
2010/06/30(水) 17:21:48ID:rT0kLg8K0
と思ったら、

8097 root 1 67 r23 20312K 3952K CPU1 1 1:04 100.00% logbuffer

なんか、暴走してしまった。
ログファイルもとられないな。

とりあえず元に戻した。
2010/06/30(水) 17:31:40ID:pzW+pmP+0
>>126
LAが跳ね上がってるし・・・

http://ch2.ath.cx/hayabusa.html
128む@出先
垢版 |
2010/06/30(水) 17:32:26ID:rT0kLg8K0
>>127
それは、さっきのhttpd再起動の影響かと。

>>126 のテストは www2 でやっています。
129む@出先
垢版 |
2010/06/30(水) 17:37:45ID:rT0kLg8K0
>SunOSさん

デバッガでさらっと見てみたら、

while ( aio_read(&aiocbr) && errno == EAGAIN ) sched_yield();

ここでぐるぐるしているみたいです。
130む@出先
垢版 |
2010/06/30(水) 17:38:36ID:rT0kLg8K0
あ、ちがうかも。

sched_yield は他にもあるのか。
もうちょっとしらべてみます。
131む@出先
垢版 |
2010/06/30(水) 17:40:46ID:rT0kLg8K0
(gdb) where
#0 0x0000000800acf98c in sched_yield () from /lib/libc.so.7
#1 0x00000000004024d5 in Logbuffer::loop (this=0x7fffffffe970) at logbuffer.cpp:228
#2 0x0000000000402d44 in main () at logbuffer.cpp:407
132む@出先
垢版 |
2010/06/30(水) 17:42:55ID:rT0kLg8K0
>>131 で確定ですね。228行目。

これで、デバッグできるのかしら。
2010/06/30(水) 17:49:06ID:iFb9RRrJ0
>>129-132 どうもすみませんです.で,228行目でループということだと
aio_write() が EAGAIN でずっと失敗し続けてるということに......
なぜそうなるのか,しばらく思案してみます......
134む@出先
垢版 |
2010/06/30(水) 18:02:21ID:rT0kLg8K0
>>133
どもです。

ちなみにその状態の時、ログファイルは吐かれておらず、
httpdは応答を返せない状態になるようです。
135む@出先
垢版 |
2010/06/30(水) 18:19:49ID:rT0kLg8K0
>>133
/usr/src/sys/kern/vfs_aio.c

結局、ここにいって、EAGAIN になっているみたい。

/*
* Queue a new AIO request. Choosing either the threaded or direct physio VCHR
* technique is done in this code.
*/
int
aio_aqueue(struct thread *td, struct aiocb *job, struct aioliojob *lj,
int type, struct aiocb_ops *ops)
{
struct proc *p = td->td_proc;
struct file *fp;
struct socket *so;
struct aiocblist *aiocbe, *cb;
struct kaioinfo *ki;
struct kevent kev;
struct sockbuf *sb;
int opcode;
int error;
int fd, kqfd;
int jid;

if (p->p_aioinfo == NULL)
aio_init_aioinfo(p);

ki = p->p_aioinfo;

ops->store_status(job, -1);
ops->store_error(job, 0);
ops->store_kernelinfo(job, -1);

if (num_queue_count >= max_queue_count ||
ki->kaio_count >= ki->kaio_qallowed_count) {
ops->store_error(job, EAGAIN);
return (EAGAIN);
}
(以下略)
136む@出先
垢版 |
2010/06/30(水) 18:21:54ID:rT0kLg8K0
%grep kaio_qallowed_count *
vfs_aio.c: int kaio_qallowed_count; /* (*) maxiumu size of AIO queue */
vfs_aio.c: ki->kaio_qallowed_count = max_aio_queue_per_proc;
vfs_aio.c: ki->kaio_count >= ki->kaio_qallowed_count) {
%grep max_aio_queue_per_proc *
vfs_aio.c:static int max_aio_queue_per_proc = MAX_AIO_QUEUE_PER_PROC;
vfs_aio.c:SYSCTL_INT(_vfs_aio, OID_AUTO, max_aio_queue_per_proc, CTLFLAG_RW,
vfs_aio.c: &max_aio_queue_per_proc, 0,
vfs_aio.c: ki->kaio_qallowed_count = max_aio_queue_per_proc;

で、、、。

%sysctl -a | grep max_aio_queue_per_proc
vfs.aio.max_aio_queue_per_proc: 256

うーむー、まじかいな。
137む@出先
垢版 |
2010/06/30(水) 18:24:26ID:rT0kLg8K0
%sysctl vfs.aio.max_aio_queue_per_proc=1024
vfs.aio.max_aio_queue_per_proc: 256 -> 1024

わーい。うごいた。
138む@出先
垢版 |
2010/06/30(水) 18:25:09ID:rT0kLg8K0
ということで、

・SunOSさんのコーディングには虫はいないらしい
・FreeBSD側のチューニングが必要だったらしい

ということの模様。
139む@出先
垢版 |
2010/06/30(水) 18:26:44ID:rT0kLg8K0
というわけで、このへんをチューニングすれば、
もっといい結果が得られるかもしれない、ということが新たに判明。

%sysctl vfs.aio
vfs.aio.max_buf_aio: 16
vfs.aio.max_aio_queue_per_proc: 1024
vfs.aio.max_aio_per_proc: 32
vfs.aio.unloadable: 0
vfs.aio.aiod_lifetime: 30000
vfs.aio.aiod_timeout: 10000
vfs.aio.num_buf_aio: 0
vfs.aio.num_queue_count: 513
vfs.aio.max_aio_queue: 1024
vfs.aio.target_aio_procs: 4
vfs.aio.num_aio_procs: 4
vfs.aio.max_aio_procs: 32
2010/06/30(水) 18:28:34ID:iFb9RRrJ0
>>134-139 なるほど,そういうことでしたか.

#define AIO_BUF_WRITE_NUMBER            (512)

これがデフォルトの vfs.aio.max_aio_queue_per_proc より大幅に大きかったと......
141む@出先
垢版 |
2010/06/30(水) 18:31:02ID:rT0kLg8K0
>>140
結局いつもどおり、カーネルソースを当たるかんじでした。

例によって全部読むんじゃなくて、必要なところをちょこちょことやって、
それっぽいのを grep して、sysctl であたりをつける、みたいな。

>>135-137 が割と、いつもやっていることを如実に示してますです。
この例ではうまくいったわけですが、しくった時にはシステム即死で。
2010/06/30(水) 18:37:35ID:gYFXEKAa0
なるほど、まったく分からん
143ビグレックス
垢版 |
2010/06/30(水) 18:40:55ID:HmDSYSbI0
ビグレックス:http://www.kanpoebay.com/product/22.html
144む@出先
垢版 |
2010/06/30(水) 18:41:11ID:rT0kLg8K0
/etc/sysctl.conf @ www2 に、とりあえず、

# tuning for aio(4)
vfs.aio.max_aio_queue_per_proc=1024

を追加した。

ほかは、今時間あんまりとれないので、とりあえずあとで。
2010/06/30(水) 18:44:34ID:FWBv0bM80
>>143
SUCCESS: 200 OK [逆引き不可] +1pt.
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。