名古屋*BSDユーザグループ(NBUG)2015/11月例会の記録
NBUG2015年11月例会の例会会場「円頓寺商店街ふれあい館」を開けました。例会は14時から17時までです。 p.twipple.jp/ujkrS
2015-11-28 13:26:02Go 本体:1.5 Goを作るためにGoが必要 NetBSD対応コード:ブートストラップCからGoに書き直された OABI パディング問題
2015-11-28 14:29:04pkgsrc 1.5になっている。1.5.2? C部分が書き直された lang/go14 only for plathome
2015-11-28 14:30:28evbarm 7 でハングする問題は回避した カーネルは7.0 release. armだけの問題じゃない armv5までしか動かない問題の暫定回避
2015-11-28 14:31:37NetBSD/arm 7でハングアップ:Go1.4から。NetBSD armで7.0以降 v6/v7 で ページサイズが8Kに変更されている
2015-11-28 14:34:54RPI armv6 pagesize=4096 だと4096 ちゃんと動く。RPI2 armv7 pagesize=4096 カーネル起動するとパニックする
2015-11-28 14:35:52Go コンパイラが作る plan9リンカ armアーキテクチャの場合4Kだからプログラムバイナリだから4Kだと指定してある。4K単位でmmapしてloadする。実際は8K すでにマップされているページをマップしようとしてabortする。
2015-11-28 14:37:08i386 4K amd64 1Mくらい?でかい値huge page table . 68K. 8K 68Kのプログラムはプログラムコードのバウンダリも8Kなので問題が起きない
2015-11-28 14:39:17Goはハードコーディングされている:armは全部:動いた?armv5までのカーネルでしか動かない ある程度大きいプログラムが落ちる ページサイズ8Kになったにもかかわらず決め打ちでconstでフィジカルページサイズ定数が4Kになっている。Goは自分でメモリ管理をやっている。
2015-11-28 14:42:008Kバウンダリと4Kバウンダリ:Goのメモリ管理数ヶ所:変更されるように考えられていない:armv6以降は8K armv5は4K qemuでうごくやつは4Kだから動く
2015-11-28 14:43:08起動時にMD部分のページサイズをsysctlから取得して変数に入れる:constでアクセスしている所を変数でアクセスする(MI)
2015-11-28 14:43:48hugepagesize Linuxでつかう :固定して終わり:メモリ管理部分:ローダ部分はhugepagesizeはlinux専用の変数がある:
2015-11-28 14:45:10最適化がきいていればconstかそうじゃないかはパフォーマンスに影響ないのでは? RPIで8K上でビルドできるようになった。OABI
2015-11-28 14:46:43EABI 64bit境界 8bit バウンダリ :システムコールを呼び出すときの引数 padding:EABIなら必要:必要なのはdefs netbsd arm 同じ構造体もあるのに直されていない
2015-11-28 14:47:57システムコール context構造体:スレッド マルチタスク padding とサイズあわせが必要 plan9コンパイラ
2015-11-28 14:49:23EABIフラグを立てる:padding はどこにはいるのか nativeな環境で比較してpaddingいれまくり :EABIでもGo1.5が作れるようになった
2015-11-28 14:51:32Go 1.5のbootstrapがgoになった:NetBSD eabi でもhello goはうごくようになった:まだおかしい所がある
2015-11-28 14:52:16