トップ «前の日(02-05) 最新 次の日(02-07)» 追記

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2008-02-06

_ [SAD]Beam Line Element名での Caseの扱い

掲示板 にも書きましたが、Beam Line Element名での Caseの扱いが変です。 MAINレベルとか SADScript関数(LINE/Element/...)では Case Preserveかつ Case Sensitive Matchなんですが、FFSコマンドラインは Case Preserveで無い上に Case Sensitive Matchのようで、小文字混じりの要素を FITや FREE/FIXに 使えないことを見付けました...Orz

コマンド名を Case Insensitive Matchするのでなく、問答無用で 全てのtoken(コマンド名以外を含む)のCaseを正規化してから Case Sensitive Matchをかけてるっぽいのですが...

少なくともシステムの一貫性が損なわれている部分は修正すべきなのですが、 正しい仕様はなんなんでしょう?

_ [SAD]頭痛くなって来た...

script/bench2.sadにて、RFMARK2と宣言した要素を fit rfmark2 ...で参照するコードを発見

つまり、過去のコードは FFSコマンドラインでの要素名に対する Case Insensitive Match若しくはCase Normalizationを 期待している...頭痛くなって来たぞ Orz

たぶん、後方互換性を維持するには Case Matching Ruleを制御する フラグか関数を導入する必要があるとみた(Case Normalizationを 強要すると LINE/Element関数が Case Sensitiveで無くなるので、 それに依存したコードの互換性を損なうし...全ての要素名が 表れる部分にCase Normalizationを実装するのは面倒)

_ [SAD]Fortran system関数修正

Fortranコンパイラが system INTRINSICを提供しない際に使う system_()のプロトタイプが間違っていたというか、 間抜けなことに system() INTRINSIC soubrutine互換を実装してた。 呼び出し側で使っているのは、system() INTRINSIC functionなんだよね... (g77/gfortranにはINTRINSICがあるので関係ないです。ifcで問題が...)

やっぱ、プロトタイプ宣言の無い言語で大規模開発は厳しい気がする


2009-02-06

_ [FreeBSD][雑記]nfe driver

1000BASE-TでのスループットをnetioでTCPでの通信速度を測定してみると、 色々興味深いことが分かった。

割り込みモードだと、Txは112MB/sまで伸びるが、Rxは25MB/s辺りで頭打ち。 また、性能はパケットサイズにあまり依存しない。

ポーリングモードだと、Txは90〜112MB/s、Rxは12〜92MB/s辺りで、 パケットサイズに依存する。(2kB以下のパケットサイズではRxは割り込みモー ドの半分程度しか性能が出ない)

であるのだが、ipfwをくぐらせるとTxスループットが4分の1程度まで落ちてしまう。 また、TCP Segmentation Offloading(tso)がONだとRx性能がかなり下がる。 逆にTCP Segmentation Offloading(tso)がOFFだとRxスループットが 伸びるのだが、Tx/Rxスループットともに値が安定しない。

チップの特性的には、Rxバッファが少ないか受信割り込み回りの性能が 低めのようである。

ipfwと組み合わせた際の謎の挙動は、NICとipfwの処理速度と TCPのバッファリングや輻輳制御と干渉が起こっているのであろうか?

_ [FreeBSD][雑記]TCP Segmentation Offloading(tso)怪しさ爆発

nfeからStore Forward Switch経由で 100BASE-TXのホストに繋いで TCPスループットを測定した場合

TCP Segmentation Offloading(tso)の無いとき
NETIO - Network Throughput Benchmark, Version 1.26
(C) 1997-2005 Kai Uwe Rommel

TCP connection established.
Packet size  1k bytes:  11399 KByte/s Tx,  11468 KByte/s Rx.
Packet size  2k bytes:  11505 KByte/s Tx,  11233 KByte/s Rx.
Packet size  4k bytes:  10894 KByte/s Tx,  11468 KByte/s Rx.
Packet size  8k bytes:  11510 KByte/s Tx,  11281 KByte/s Rx.
Packet size 16k bytes:  11454 KByte/s Tx,  11280 KByte/s Rx.
Packet size 32k bytes:  11508 KByte/s Tx,  11100 KByte/s Rx.
Done.

TCP Segmentation Offloading(tso)の有るとき
NETIO - Network Throughput Benchmark, Version 1.26
(C) 1997-2005 Kai Uwe Rommel

TCP connection established.
Packet size  1k bytes:  20836 Byte/s Tx,  1777 KByte/s Rx.
Packet size  2k bytes:  24393 Byte/s Tx,  1630 KByte/s Rx.
Packet size  4k bytes:  24229 Byte/s Tx,  1625 KByte/s Rx.
Packet size  8k bytes:  20908 Byte/s Tx,  1626 KByte/s Rx.
Packet size 16k bytes:  16584 Byte/s Tx,  1623 KByte/s Rx.
Packet size 32k bytes:  16579 Byte/s Tx,  1639 KByte/s Rx.
Done.

Rxスループットが致命的低い&何やら、20MB/sという不思議な数字が... 少なくとも、nfeのTCP Segmentation Offloading(tso)の実装は かなり怪しいようで...


2010-02-06

_ [雑記]涼宮ハルヒの消失

シネプレックスつくばで鑑賞。 やはり、バスが一時間に一本程度と公共交通機関が不便だった。

尺は長いが中弛みも無く、話の構成も良く整理されていて、良い出来だと思う。


2011-02-06

_ [FreeBSD][Admin]ZFS上でのpanic

先日のpanicであるが、大体分かった気がする...

  • ZFSにI/O負荷が集中する際に発生している(buildworldとか ports buildとか)
  • freezeから rebootまでに swap device or root deviceへの長時間のアクセスが発生している
  • crash dumpは取れていない
  • 同様のFreeBSD/amd64 8-STABLE + ZFS ROOTで、負化時も安定動作な環境がある

という状況で、環境依存であることに気が付きました。 特に、dumpらしき長時間のアクセスランプの点滅があるのに crash dumpが取 れていない点に着目し、dump中に mirror構成の swap deviceから SSDを引き 抜いて見たところ、crash dumpが成功し CAM layer内で panicが発生したこと が判明しました。

swapと rootは SSD+HDDな mirror構成だったのですが、SSD側に書き込み不能 な状況で panicし、crash dumpも primaryな SSD側への書き込みに失敗し dumpが残らない状態で rebootしていたようです。

  • HDD+HDDな構成に変更以後、同様の事例は未発生
  • SSD(TOSHIBA)+HDDな構成の ZFS ROOTでは、未発生

な状況から考えるに、使用していたIntel製SSDに問題があるのかもしれません。

SSDは、高いけど TOSHIBA製しか使い物にならないのかな...Orz

_ [FreeBSD]ZFSに足りないもの

UnionFSと組み合わせて使えない Orz

jailで base system imageに固有の差分を UnionFSで被せて運用しようと考えていた けど、ZFS同士を UnionFSで重ねることが出来ない...

zfs cloneだと snapshotから枝を生やせるが、幹となる snapshotを更新でき ないので、jailの base system imageだけアップデートするという技が使えない

まあ、現時点では jailは一個しか運用していないから問題ないんだけど...


2017-02-06

_ [FreeBSD][samba]samba4 on ZFS on FreeBSD備忘録

忘れそうなので、環境構築のメモ

NAS箱の認証情報統合を考えてるので、ADのPDCを構成することが目的

まずは、samba4.xのインストールと動作環境系の覚書

  • net/samba44及び net/samba43は、third_party/waf/wafadmin/Tools/cc.pyへのパッチが必要
  • net/samba44のsamba-toolでは、domain provisionの途上でpythonがcrashする(net/samba43は問題無し)
    • 詳細は未調査
  • /var/db/samba4が、POSIX 1e ACLをサポートしていないとsamba-toolでのdomain provisionが失敗する
    • /var/db/samba4上に形成するsysvolにてPOSIX 1e ACLを設定するため
    • 現状のFreeBSD11のZFS実装は、NFSv4 ACLのみ?
    • ZVOLをalcsオプション付きでUFS mountすれば動く
      • fstabには、lateオプション付きで書いておく
      • newfs時にsoft updatessoft update journalingをONしておくと良い
        • 忘れたら、tunefs(8)で

AD作成の覚書

  • PDCの初期化
samba-tool domain provision --domain=MYDOMAIN --realm=MYDOMAIN.AD.EXAMPLE.JP --use-rfc2307 --adminpass=HOGEHOGE
    • --adminpassオプションを付けないと、管理者パスワードは自動生成されて、最後のsummaryに表示されるが…ぶっちゃけ覚えられない
  • Domain UsersのGIDマッピングの変更
ldbedit -H /var/db/samba4/private/idmap.ldb
    • ldbeditからデータベース上のxidNumberを手動で書き換え(samba停止中に)
      • 事前にwbinfo --name-to-sid "Domain Users"でSIDを調べた場合は、ldbeditへ ObjectSid=[sid]を渡すと余計なエントリが編集対象にならない
    • 手元の環境だと、idmap_ldb:use rfc2307 = yesの設定でも、samba userの GIDがDomain Groupから選ばれ20(staff)にマップされるのが、都合が悪いので変更
    • 多分、samba-toolのPython側にパッチを当てる方がスマートだけど探すのが面倒 orz
  • Password設定の変更
    • 有効期限の制限を外す
samba-tool domain passwordsettings set --max-pwd-age=0
    • パスワード複雑性検査を外す
samba-tool domain passwordsettings set --complexity=off
      • 実運用ではお勧め出来ないが、テスト中は外しておかないと打ち込むのが面倒
  • SAMBA userの追加
samba-tool user add MY_SMB_ACCOUNT --nis-domain=MY_DOMAIN --uid=MY_ACCOUNT --uid-number=MY_UID --gid-number=MY_GID --unixhome=MY_HOME_DIR --login-shell=/bin/tcsh
    • SAMBA user MY_SMB_ACCOUNTを unix user MY_ACCOUNTと同一視する設定
      • idmap_ldb:use rfc2307 = yesを設定しても、WINBINDが配るGIDがSMBアカウントに設定した UNIX GIDではなく、Domain UsersのGIDになる
      • winbind nss info = rfc2307を設定しても、home directorylogin-shellが templateからの生成になる
        • template homedirを適切に設定しておく(さもないと homes共有がまともに動かない?)
        • homedirが単一階層で無いときは、null mountとか symbolic linkするのかなぁ…
        • tdb backendがいかんのかなぁ?
  • WINBINDの設定
    • /etc/nsswitch.confの passwd, groupに winbindを追加(filesより後にすること)
    • デバック中は、winbind enum users = yeswinbind enum groups = yesを設定しておくと便利
    • ADからのログインは使う予定がないので、PAM関連の設定はパス
  • DNSの統合
    • 同一サーバーで、DNS権威サーバーやキャッシュリゾルバーを動かしている場合、SAMBA4内蔵のDNSを使うにはbind interfaces only = yesinterfacesの設定が必須
    • デフォルトでは、ANYの53番ポートをLISTENされてしまう
    • interfacesで設定したアドレスでLISTENするので、DNS権威サーバーと衝突しない別名アドレスを選ぶこと
    • ローカルなキャッシュリゾルバーを127.0.0.1で動かしている場合は、127.0.0.1interfacesに追加出来ない
      • smbpasswdなどが、localhostに接続に行くので多少問題になる
      • 必要なサービスは、inetd + ncなので適宜にリダイレクトすること
      • samba4の設定としては、dns forwarderでリゾルバーへフォワードさせる設定が推奨っぽいが、キャッシュリゾルバーの代わりをsambaにやらせるとプロセスが落ちたときにDNSが引けなくなるのでNG
      • キャッシュリゾルバーのフォワード設定(ドメイン単位)・ローカルドメインの権限移譲を設定し、MYDOMAIN.AD.EXAMPLE.JPへのDNS検索をSAMBAプロセスが立ち上げてるDNSサーバーへ向ける
        • 設定しないと、AD関連のDNSレコードが引けない

カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記