Gauche icon indicating copy to clipboard operation
Gauche copied to clipboard

Avoid r7rs-benchmarks timeout

Open Hamayama opened this issue 7 months ago • 1 comments

  • 最近更新された r7rs-benchmarks の結果で、 cpstak と parsing のタイムアウト(5分以上)が発生していたため調べました。

  • 情報元: https://ecraven.github.io/r7rs-benchmarks/

  • ひとつ前の結果: https://web.archive.org/web/20221104225919/https://ecraven.github.io/r7rs-benchmarks/

  • 自分の環境 (Windows) で確認したところ、 Gauche 0.9.14 と 0.9.15 とでは、実行時間が以下のように増加していました。

    ./bench gauche cpstak
        178s  ==>  237s (133%)
    ./bench gauche parsing
        296s  ==>  370s (125%)
    
  • このため、git bisect で、0.9.15 と 0.9.14 の間を確認したところ、 次のコミットが見つかりました。 https://github.com/shirok/Gauche/commit/89d270c ( Explicitly start marker threads )

  • 変更箇所をコメントアウトしたところ、以下のように改善しました。

    ./bench gauche cpstak
        162s
    ./bench gauche parsing
        263s
    

<補足情報>

  • https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3AGC の下の方に、過去の GC の設定の情報があります。(古いですが…) そこに、THREAD_LOCAL_ALLOC を設定すると、シングルスレッドアプリケーションでは、 20%程度速度が低下したというような記述があります。

  • 別の情報として、事前に

    export GC_INITIAL_HEAP_SIZE=100M
    

    を実行すると、変更箇所のコメントアウト前の実行時間は、

    ./bench gauche cpstak
        117s
    ./bench gauche parsing
        160s
    

    に減少しました。また、変更箇所のコメントアウト後の実行時間は、

    ./bench gauche cpstak
        105s
    ./bench gauche parsing
        134s
    

    に減少しました。 これは以前、 Gauche-r7rs-bench-GM で調べた結果に近くなっています。 ただ、メモリを消費するし、効果があるプログラムは一部だけのようでした。

Hamayama avatar Jul 12 '24 15:07 Hamayama