ジェーンストリートの夏季インターンシッププロジェクト:高速化されたJSQL、改良されたTorchバインディング、プロセス間メモリ管理

2025-08-29
ジェーンストリートの夏季インターンシッププロジェクト:高速化されたJSQL、改良されたTorchバインディング、プロセス間メモリ管理

ジェーンストリートは今年の夏季インターンシッププログラムから3つの優れたプロジェクトを紹介しています。レオ・ガグノンのJSQL評価器は、インデックス化により数百倍の高速化を実現しました。アリアン・カトリによる改良されたOCaml Torchバインディングは、OxCamlを活用してGPUメモリの安全で効率的な管理を実現しました。そして、アンソニー・リーのインタープロセスメモリ管理ライブラリは、参照カウントによりシリアライゼーションのオーバーヘッドを排除しました。これらのプロジェクトは、社内ツールの効率向上だけでなく、オープンソースコミュニティへの貴重な貢献をもたらしています。

続きを読む
開発

ヒッグス・バグソン狩り:NFS/Kerberosカーネルレベルの問題のデバッグ

2025-07-03
ヒッグス・バグソン狩り:NFS/Kerberosカーネルレベルの問題のデバッグ

エンジニアは、重要な取引データシステムであるGordで、ファイルコピーの失敗(-EACCES)を引き起こす、再現が困難なバグに遭遇しました。Kerberosを無効にすると問題が解決し、認証の問題が示唆されました。調査の結果、カーネルはrpc_gssdデーモンを介してKerberos資格情報を取得しますが、ログには異常は見つかりませんでした。長時間のテスト、メモリ内擬似ファイルシステムの作成、bpftraceによるカーネルトレースなどを行い、最終的に問題を特定しました。NFSサーバーの負荷が高いため、リクエストの再送が発生し、カーネルは同じXIDだが異なるGSSシーケンス番号を持つリクエスト/レスポンスを誤って処理し、チェックサムの不一致とエラーが発生していました。エンジニアは、シーケンス番号の不一致による即時再送を防ぐために、カーネルを修正しました。

続きを読む

OCamlにおけるGADTsによる効率的なメモリ表現

2025-05-12
OCamlにおけるGADTsによる効率的なメモリ表現

この記事では、OCamlで一般化代数データ型(GADTs)を使ってメモリ表現を最適化する方法を探ります。まず、著者はOCamlの多相性の限界、特にList.iter関数が統一的なメモリ表現のために異なるデータ型を扱う際の空間効率の悪さについて説明します。次に、通常の変種とオブジェクトの2つの方法を用いて、通常の配列とバイト配列の両方を扱えるCompact_array型を作成しようとしますが、型推論とメモリ割り当ての効率の問題に直面します。最後に、GADTsを用いることで、著者は異なるデータ型の配列に対し、柔軟で効率的なメモリ表現を成功裏に実現し、GADTsがコンパイラの作成だけでなく、特に精密なメモリ制御を必要とする高性能アプリケーションにおいても有用であることを示しています。

続きを読む
開発

Jane Streetの10年にわたる旅:JengaからDuneへ

2025-01-30
Jane Streetの10年にわたる旅:JengaからDuneへ

Jane Streetは当初、OCamlビルドシステムであるJengaを開発しましたが、その制限により採用が限定され、オープンソース化も取り消されました。その後、よりシンプルなJbuilderを作成し、その速度が理由で予想外の普及を遂げ、最終的にDuneへと進化しました。長年の努力を経て、Jane Streetチームは7000万行のコードの内部ビルドシステムをJengaからDuneに移行することに成功し、ビルド速度を向上させ、Duneの将来の発展のための堅実な基盤を築きました。

続きを読む
開発