名古屋*BSDユーザグループ(NBUG)2015/11月例会の記録

2015年11月28日に行われた名古屋*BSDユーザグループ(NBUG)2015/11月例会の記録 です。 http://www.nagoya.bug.gr.jp/ とか。 #NBUG #NetBSD
1
KNoda @kokkibar

NBUG2015年11月例会の例会会場「円頓寺商店街ふれあい館」を開けました。例会は14時から17時までです。 p.twipple.jp/ujkrS

2015-11-28 13:26:02
拡大
Jun Ebihara @ebijun

おおしまさん:続 Lets' Go

2015-11-28 14:27:09
Jun Ebihara @ebijun

Go 本体:1.5  Goを作るためにGoが必要 NetBSD対応コード:ブートストラップCからGoに書き直された OABI パディング問題

2015-11-28 14:29:04
Jun Ebihara @ebijun

pkgsrc 1.5になっている。1.5.2? C部分が書き直された lang/go14 only for plathome

2015-11-28 14:30:28
Jun Ebihara @ebijun

evbarm 7 でハングする問題は回避した カーネルは7.0 release. armだけの問題じゃない armv5までしか動かない問題の暫定回避

2015-11-28 14:31:37
Jun Ebihara @ebijun

ifdef で逃げられないのでブートストラップで何とかするしかない。

2015-11-28 14:32:49
Jun Ebihara @ebijun

Go 1.5 も非常に制限付きかつ問題多難ながら多少は動く

2015-11-28 14:33:36
Jun Ebihara @ebijun

NetBSD/arm 7でハングアップ:Go1.4から。NetBSD armで7.0以降 v6/v7 で ページサイズが8Kに変更されている

2015-11-28 14:34:54
Jun Ebihara @ebijun

RPI armv6 pagesize=4096 だと4096 ちゃんと動く。RPI2 armv7 pagesize=4096 カーネル起動するとパニックする

2015-11-28 14:35:52
Jun Ebihara @ebijun

Go コンパイラが作る plan9リンカ armアーキテクチャの場合4Kだからプログラムバイナリだから4Kだと指定してある。4K単位でmmapしてloadする。実際は8K すでにマップされているページをマップしようとしてabortする。

2015-11-28 14:37:08
Jun Ebihara @ebijun

排他的なところだとabort 排他的じゃないところだと待ち続ける

2015-11-28 14:37:42
Jun Ebihara @ebijun

カーネルローダのエラーチェックが足りていない。

2015-11-28 14:38:10
Jun Ebihara @ebijun

i386 4K amd64 1Mくらい?でかい値huge page table . 68K. 8K 68Kのプログラムはプログラムコードのバウンダリも8Kなので問題が起きない

2015-11-28 14:39:17
Jun Ebihara @ebijun

Goは4Kになっている Linuxでも問題になった:性能が遅くなるからやだ

2015-11-28 14:39:50
Jun Ebihara @ebijun

Goはハードコーディングされている:armは全部:動いた?armv5までのカーネルでしか動かない ある程度大きいプログラムが落ちる ページサイズ8Kになったにもかかわらず決め打ちでconstでフィジカルページサイズ定数が4Kになっている。Goは自分でメモリ管理をやっている。

2015-11-28 14:42:00
Jun Ebihara @ebijun

8Kバウンダリと4Kバウンダリ:Goのメモリ管理数ヶ所:変更されるように考えられていない:armv6以降は8K armv5は4K qemuでうごくやつは4Kだから動く

2015-11-28 14:43:08
Jun Ebihara @ebijun

起動時にMD部分のページサイズをsysctlから取得して変数に入れる:constでアクセスしている所を変数でアクセスする(MI)

2015-11-28 14:43:48
Jun Ebihara @ebijun

hugepagesize Linuxでつかう :固定して終わり:メモリ管理部分:ローダ部分はhugepagesizeはlinux専用の変数がある:

2015-11-28 14:45:10
Jun Ebihara @ebijun

最適化がきいていればconstかそうじゃないかはパフォーマンスに影響ないのでは? RPIで8K上でビルドできるようになった。OABI

2015-11-28 14:46:43
Jun Ebihara @ebijun

EABI 64bit境界 8bit バウンダリ :システムコールを呼び出すときの引数 padding:EABIなら必要:必要なのはdefs netbsd arm 同じ構造体もあるのに直されていない

2015-11-28 14:47:57
Jun Ebihara @ebijun

システムコール context構造体:スレッド マルチタスク padding とサイズあわせが必要 plan9コンパイラ

2015-11-28 14:49:23
Jun Ebihara @ebijun

EABIフラグを立てる:padding はどこにはいるのか nativeな環境で比較してpaddingいれまくり :EABIでもGo1.5が作れるようになった

2015-11-28 14:51:32
Jun Ebihara @ebijun

Go 1.5のbootstrapがgoになった:NetBSD eabi でもhello goはうごくようになった:まだおかしい所がある

2015-11-28 14:52:16