オープンソースカンファレンス2023 Shimane NetBSDブース展示の記録

2023/10/28 に松江テルサで行われるオープンソースカンファレンス2023 Shimane でのNetBSDブース展示記録です。 #osc23sm #NetBSD https://event.ospn.jp/osc2023-shimane/
2
Izumi Tsutsui @tsutsuii

@eighttails 一応 SmartOS 等は pkgsrc を使うようです pkgsrc.org Solaris や MacOS 等のフルビルド自動テストも走っているので、OS固有のビルド問題は修正を入れられたりはします。 実際に動かしてテストされているかはユーザ次第ですが、各担当はOS依存にならないように書く、くらいですね

2023-10-22 14:39:05
henrich @henrich

@tsutsuii カーネルそのもの、というのは何でしょう? debian-installer については複数モジュールからこうせいされてるので複雑ですが、Wiki等に記載ないですか?

2023-10-22 11:55:24
Yao Tadahito(八尾 唯仁) @eighttails

@tsutsuii そうか、NetBSD以外でもLinuxなんかでpkgsrcだけ使うというユースケースもあり得るんですかね。

2023-10-22 11:51:56
Izumi Tsutsui @tsutsuii

@eighttails とりあえず pkgsrc は NetBSD の場合に DEFINES+="DELAY_TIMER_MS_DEFAULT=10" で qmake を呼ぶようにしてコミットしました。 別OSでどうなるかとかはぼちぼち見てみます

2023-10-22 11:50:35
Yao Tadahito(八尾 唯仁) @eighttails

@tsutsuii かなり不可解な挙動ですね。 ただ元々の事象は回避できるようになったと思うので、これでしばらく様子を見ていただけますでしょうか。

2023-10-22 11:15:42
Izumi Tsutsui @tsutsuii

@eighttails 毎回 pc6001vx.ini から [generic] timerResolution=1 を削除して 1) 100%出る 2) (差分を減らすために ms の計算を ms = tms; として)100%出る 3) (上記2)に対して app->getSetting() をコメントアウトして)66%になる(4.2.2と等価) という結果です。 そんなことある? という感じではありますが pic.twitter.com/16AgoapA56

2023-10-22 10:46:25
拡大
拡大
拡大
Yao Tadahito(八尾 唯仁) @eighttails

@tsutsuii pc6001vx.iniの該当エントリを削除した上で 1)DELAY_TIMER_MS_DEFAULTを設定せずにビルド 2)1)の上にQThread::msleep(tms);に変更 3)2)の上にapp->getSetting()をコメントアウト でそれぞれどうなるでしょうか。 3)は4.2.2と等価だと思うのですが。

2023-10-22 10:29:10
Izumi Tsutsui @tsutsuii

@eighttails 設定もあるので実際の値がどうかも見たのですが - 設定を開いて タイマー精度:1ms の状態 - OSD_Delay() で delayResolution の値が1なのを確認 - OSD_Delay() で delayResolution を取得するが引数の tms をそのまま msleep() に渡す のいずれでも 100% 出る、という状況です

2023-10-22 10:22:14
Yao Tadahito(八尾 唯仁) @eighttails

@tsutsuii タイマー精度はUI(設定ダイアログの「その他」タブ)から変更されてるでしょうか?マクロの方はデフォルト値なので一度pc6001vx.iniに設定値が永続化されるとiniファイルの方の値が使われます。

2023-10-22 10:09:59
Izumi Tsutsui @tsutsuii

PC6001VX\.pro の qmake プロジェクトファイルで netbsd-g++ 判定使って DEFINES += DELAY_TIMER_MS_DEFAULT=10 とするか、 pkgsrc的にもOS判定するのだから pkgsrc側で qmake に渡す ${QMAKE_ARGS} を QMAKE_ARGS+= DEFINES+="DELAY_TIMER_MS_DEFAULT=10" とするか(という細かいところで悩む)

2023-10-22 09:17:30
Izumi Tsutsui @tsutsuii

qmakeで指定できるプラットフォーム識別子 qiita.com/shibukawa/item… 少なくとも pkgsrc の Qt 6.5.0 だと NetBSD/i386 9.3 上では netbsd: はマッチしなくて netbsd-g++: はマッチして使えるっぽい?

2023-10-22 08:59:13
Izumi Tsutsui @tsutsuii

@eighttails 4.2.3 を NetBSD/i386 9.3 で試したところ - タイマー精度 1ms でも 100% 約60fps 出る - OSD_Delay() を 4.2.2 相当に戻すと約66%の挙動に戻る - app->getSetting() を呼んで切り上げ計算せずQThread::msleep(tms) を呼ぶと 100% 出る という感じです。Qt側を呼ぶと同期かかる、とかあるでしょうか?

2023-10-22 08:46:33
Izumi Tsutsui @tsutsuii

@eighttails 逆の発想で、とりあえず msleep(1) が実時間でどれだけかかっているかを複数回計測して HZ を推定する、というのは可能かもしれません

2023-10-22 07:55:52
Izumi Tsutsui @tsutsuii

@eighttails 各種エミュレータの実装をちゃんと読んだことがないので門前小僧知識だけですが、 正確な時間を待つことはできなくても正確な現在時刻を取得することは(少なくとも今どきのマシンであれば)可能なので、ホスト実時間とゲスト時間の差を見て調整する、みたいな実装が必要そうな気がします

2023-10-22 07:54:10
Yao Tadahito(八尾 唯仁) @eighttails

@tsutsuii ひとまず4.2.3としてリリースしました。Delayデフォルト値のマクロの名前がDELAY_TIMER_MS_DEFAULTに変わっているので注意してください。

2023-10-21 17:41:50
Yao Tadahito(八尾 唯仁) @eighttails

@tsutsuii そもそもsleepで待つというのが筋が悪いんだろうと思うのですが、1/60秒ごとに処理を実行するというのが他に方法が思いつかないのと、あったとして上流のP6Vの設計にかなり手を入れないといけないのが悩ましいです。

2023-10-21 16:15:13
Izumi Tsutsui @tsutsuii

debian や ubuntu、ディストリビューションの各アプリのソースコード一式はすぐ出てくるけど、カーネルそのものとかインストーラーとかのソースや設定ファイル等々についてどこを見るとよいのかがすぐに出てこない(探す人もいないということか)

2023-10-21 14:33:45
Jun Ebihara @ebijun

パッケージマネージャーで検索した。 pic.twitter.com/yAZzDmuljL

2023-10-21 13:37:32
拡大
Izumi Tsutsui @tsutsuii

@eighttails いったんそうするくらいしか手がなさそうです。 ちゃんとソースまで確認していませんが、 Linux x86_64 でも RHEL は HZ=1000 で ubuntu は HZ=250 という記載もあるので、デフォルトをどうするかも迷いそうですね……。 HZ=100 が歴史的な数字なので切り上げならこれなんでしょうが

2023-10-21 13:31:27
Yao Tadahito(八尾 唯仁) @eighttails

@tsutsuii なるほど、Qtにもタイマー精度を取得する方法はなさそうなので、UIで設定できるようにして、デフォルト値をDEFINESで決められるようにする感じですかね。

2023-10-21 13:08:15
Jun Ebihara @ebijun

NetBSD RPI4 でクロックが600と1800なのはなぜですか。 pic.twitter.com/3qbdA7xcQQ

2023-10-21 13:01:31
拡大
Jun Ebihara @ebijun

firefoxでパフォーマンスのハードウェアアクセラレーションを使用しないにすること。 pic.twitter.com/PDrCzg4gYB

2023-10-21 12:43:09
拡大
Izumi Tsutsui @tsutsuii

時間処理の落とし穴 - 時間精度とtick proger.blog10.fc2.com/blog-entry-64.… これは 2006年の記事で、コメントで指摘を受けているように Linux 2.4 以前では HZ=100 がデフォルト 2.6 で HZ=1000 がデフォルト 昨今の HZ の値は各ディストリビューションの選択による ということなのだろうか

2023-10-21 12:31:33