タグ

2017年4月27日のブックマーク (2件)

  • Go言語のリアルタイムGC 理論と実践 | POSTD

    (編注:誤訳、意味の分かりづらい訳を修正しました。リクエストありがとうございました。) 毎日、Pusherは数十億のメッセージをリアルタイム、つまり送り元から宛先まで100ms未満で送信しています。どのようにしてそれを可能にしているのでしょうか。重要となる要因はGoの低レイテンシのガベージコレクタです。 ガベージコレクタはプログラムを一時停止させるものであり、リアルタイムシステムの悩みの種です。そのため、新しいメッセージバスを設計する際には慎重に言語を選びました。Goは 低レイテンシを強調している ものの、私たちは懐疑的でした。「当にGoを使えば実現できるのか? もしできるならどうやって?」 このブログ記事ではGoのガベージコレクタを、どのように機能し(トリコロールアルゴリズム)、なぜ機能し(こんなに短いGCによる一時停止時間の実現)、そして何よりも、それが機能するのかどうか(GCによる

    Go言語のリアルタイムGC 理論と実践 | POSTD
    Nnwww
    Nnwww 2017/04/27
    これはGCアルゴリズム(即ち各言語におけるメモリ状況に対応する方針)の違いなので、優劣の話と履き違えたはてブ米はやめてくれよなと予め釘を打っておきたい。書き手の言う通り、スループットかレイテンシかという話
  • Rayon: data parallelism in Rust · baby steps

    Of course, part of making parallelism easy is making it safe. Rayon guarantees you that using Rayon APIs will not introduce data races. This blog post explains how Rayon works. It starts by describing the core Rayon primitive (join) and explains how that is implemented. I look in particular at how many of Rust’s features come together to let us implement join with very low runtime overhead and wit

    Nnwww
    Nnwww 2017/04/27
    rayonのプリミティブは2つの直列な処理の後半をwork-stealingの候補として預けて前半を処理、その間に後半が盗まれたかどうかで処理を変える仕組み。プロセッサに適応的な並列化を実現する