Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
世界最速級 memcached 互換サーバー作った
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
yasukata
December 06, 2025
Technology
0
440
世界最速級 memcached 互換サーバー作った
2025 年12 月 6 日 Kernel/VM探検隊@北陸 Part 8 発表資料
yasukata
December 06, 2025
Tweet
Share
More Decks by yasukata
See All by yasukata
NIC の高速化とシステムソフトウェア研究 ~ 2010 年くらいからの振り返り ~
yasukata
0
28
Other Decks in Technology
See All in Technology
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
今こそ学びたいKubernetesネットワーク ~CNIが繋ぐNWとプラットフォームの「フラッと」な対話
logica0419
5
540
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
2.1k
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.6k
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
200
Greatest Disaster Hits in Web Performance
guaca
0
300
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
360
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
170
会社紹介資料 / Sansan Company Profile
sansan33
PRO
15
400k
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
130
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
340
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
RailsConf 2023
tenderlove
30
1.3k
Documentation Writing (for coders)
carmenintech
77
5.3k
sira's awesome portfolio website redesign presentation
elsirapls
0
150
Deep Space Network (abreviated)
tonyrice
0
67
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
110
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
Accessibility Awareness
sabderemane
0
58
The Spectacular Lies of Maps
axbom
PRO
1
530
Building Applications with DynamoDB
mza
96
6.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.1k
Transcript
世界最速級 memcached 互換サーバー作った yasukata Kernel/VM探検隊@北陸 Part 8 ‒ 2025 年
12 ⽉ 6 ⽇ https://github.com/yasukata/mimicached
memcached • キーとバリューのペアを保存する機能を提供 memcached サーバー クライアント
memcached • キーとバリューのペアを保存する機能を提供 memcached サーバー クライアント key: “foo” value: “bar”
キーバリューペアを 保存してください
memcached • キーとバリューのペアを保存する機能を提供 memcached サーバー クライアント キーバリューペアを 保存してください key: “foo”
value: “bar”
memcached • キーとバリューのペアを保存する機能を提供 memcached サーバー クライアント 保存できました key: “foo” value:
“bar”
memcached • キーとバリューのペアを保存する機能を提供 memcached サーバー クライアント key: “foo” value: “bar”
memcached • キーとバリューのペアを保存する機能を提供 memcached サーバー クライアント キーバリューペアを 保存してください key: “hoge”
value: “moge” key: “foo” value: “bar”
memcached • キーとバリューのペアを保存する機能を提供 memcached サーバー クライアント キーバリューペアを 保存してください key: “hoge”
value: “moge” key: “foo” value: “bar”
memcached • キーとバリューのペアを保存する機能を提供 memcached サーバー クライアント 保存できました key: “foo” value:
“bar” key: “hoge” value: “moge”
memcached • キーとバリューのペアを保存する機能を提供 memcached サーバー クライアント key: “foo” value: “bar”
key: “hoge” value: “moge”
memcached • キーとバリューのペアを保存する機能を提供 memcached サーバー クライアント key: “foo” value: “bar”
key: “hoge” value: “moge” キー“hoge”に対応する バリューを教えてください
memcached • キーとバリューのペアを保存する機能を提供 memcached サーバー クライアント key: “foo” value: “bar”
key: “hoge” value: “moge” キー“hoge”に対応する バリューを教えてください キーが合致しない
memcached • キーとバリューのペアを保存する機能を提供 memcached サーバー クライアント key: “foo” value: “bar”
key: “hoge” value: “moge” キーが合致する キー“hoge”に対応する バリューを教えてください
memcached • キーとバリューのペアを保存する機能を提供 memcached サーバー クライアント key: “foo” value: “bar”
key: “hoge” value: “moge” “moge” です
memcached • キーとバリューのペアを保存する機能を提供 memcached サーバー クライアント key: “foo” value: “bar”
key: “hoge” value: “moge” データを主にメモリ (DRAM) 上に配置するため ディスクを主な記憶装置とするストレージシステムと⽐較して⾼速
⽬標 • スループットで最速を⽬指す memcached サーバー クライアント key: “foo” value: “bar”
key: “hoge” value: “moge” 指標:1秒間にどれだけ多くのリクエストへ応答できるか
既存の memcached 実装のスループット • 2台の同じ構成のマシン • CPU: 2つの 16-core Intel
Xeon Gold 6326 CPU @ 2.90GHz • NIC: Mellanox ConnectX-5 100 Gbps NIC • OS: Linux 6.8 • ⽚⽅のマシンで memcached サーバーを実⾏ • memcached 1.6.39 • もう⼀⽅のマシンでベンチマークプログラムを実⾏ • https://github.com/yasukata/mimicached?tab=readme-ov-file#network-benchmark-client • ベンチマークプログラムは 32 CPU コアを利⽤
既存の memcached 実装のスループット キーバリューペア数:1000 件 リクエストの分布:⼀様にランダム SET/GET ⽐率:GET 100 %
(全件ヒット) キーサイズ:8バイト バリューサイズ:8バイト 並列 TCP 接続数:32 0 50000 100000 150000 200000 250000 1 スループット [リクエスト毎秒] CPU コア数 memcached memcached が 1CPU コアを利⽤する場合は 概ね 220 K リクエスト毎秒
応答処理を構成する主な要素 memcached サーバー クライアント key: “foo” value: “bar” key: “hoge”
value: “moge” 時間
応答処理を構成する主な要素 memcached サーバー クライアント key: “foo” value: “bar” key: “hoge”
value: “moge” 時間 リクエスト
応答処理を構成する主な要素 memcached サーバー クライアント key: “foo” value: “bar” key: “hoge”
value: “moge” 時間 TCP/IP 受信処理 リクエスト
応答処理を構成する主な要素 memcached サーバー クライアント key: “foo” value: “bar” key: “hoge”
value: “moge” 時間 TCP/IP 受信処理 memcached プロトコル パース リクエスト
応答処理を構成する主な要素 memcached サーバー クライアント key: “foo” value: “bar” key: “hoge”
value: “moge” 時間 キー“hoge”に対応する バリューを教えてください TCP/IP 受信処理 memcached プロトコル パース
応答処理を構成する主な要素 memcached サーバー クライアント key: “foo” value: “bar” key: “hoge”
value: “moge” 時間 キー“hoge”に対応する バリューを教えてください TCP/IP 受信処理 memcached プロトコル パース キー バリュー 検索
応答処理を構成する主な要素 memcached サーバー クライアント key: “foo” value: “bar” key: “hoge”
value: “moge” 時間 キー“hoge”に対応する バリューを教えてください TCP/IP 受信処理 memcached プロトコル パース キー バリュー 検索 memcached プロトコル 応答⽣成 “moge” です
応答処理を構成する主な要素 memcached サーバー クライアント key: “foo” value: “bar” key: “hoge”
value: “moge” 時間 キー“hoge”に対応する バリューを教えてください TCP/IP 受信処理 memcached プロトコル パース キー バリュー 検索 memcached プロトコル 応答⽣成 “moge” です TCP/IP 送信処理
応答処理を構成する主な要素 memcached サーバー クライアント key: “foo” value: “bar” key: “hoge”
value: “moge” 時間 キー“hoge”に対応する バリューを教えてください TCP/IP 受信処理 memcached プロトコル パース キー バリュー 検索 memcached プロトコル 応答⽣成 “moge” です TCP/IP 送信処理 各要素の⽐率はどれくらい?
応答処理を構成する主な要素 memcached サーバー クライアント key: “foo” value: “bar” key: “hoge”
value: “moge” 時間 キー“hoge”に対応する バリューを教えてください TCP/IP 受信処理 memcached プロトコル パース キー バリュー 検索 memcached プロトコル 応答⽣成 “moge” です TCP/IP 送信処理 これらを含まない場合の性能を測ってみる
応答処理を構成する主な要素 サーバー クライアント 時間 TCP ping TCP/IP 受信処理 TCP pong
TCP/IP 送信処理 これらを含まない場合の性能を測ってみる
応答処理を構成する主な要素 サーバー クライアント 時間 TCP ping TCP/IP 受信処理 TCP pong
TCP/IP 送信処理 これらを含まない場合の性能を測ってみる
応答処理を構成する主な要素 サーバー クライアント 時間 TCP ping TCP/IP 受信処理 TCP pong
TCP/IP 送信処理 これらを含まない場合の性能を測ってみる サーバーアプリの処理は なるべく⼩さくなるように データを受け取ったら データを送り返すだけにする
応答処理を構成する主な要素 キーバリューペア数:1000 件 リクエストの分布:⼀様にランダム SET/GET ⽐率:GET 100 % (全件ヒット) キーサイズ:8バイト
バリューサイズ:8バイト 並列 TCP 接続数:32 0 50000 100000 150000 200000 250000 1 スループット [リクエスト毎秒] CPU コア数 memcached memcached が 1CPU コアを利⽤する場合は 概ね 220 K リクエスト毎秒
応答処理を構成する主な要素 memcached が 1CPU コアを利⽤する場合は 概ね 220 K リクエスト毎秒 0
50000 100000 150000 200000 250000 300000 1 スループット [リクエスト毎秒] CPU コア数 memcached TCP ping-pong キーバリューペア数:1000 件 リクエストの分布:⼀様にランダム SET/GET ⽐率:GET 100 % (全件ヒット) キーサイズ:8バイト バリューサイズ:8バイト 並列 TCP 接続数:32 TCP ping-pong: 16 バイトのデータを往復 TCP で ping-pong のように データを往復させるだけの場合は 約 250 K リクエスト毎秒
応答処理を構成する主な要素 memcached が 1CPU コアを利⽤する場合は 概ね 220 K リクエスト毎秒 0
50000 100000 150000 200000 250000 300000 1 スループット [リクエスト毎秒] CPU コア数 memcached TCP ping-pong キーバリューペア数:1000 件 リクエストの分布:⼀様にランダム SET/GET ⽐率:GET 100 % (全件ヒット) キーサイズ:8バイト バリューサイズ:8バイト 並列 TCP 接続数:32 TCP ping-pong: 16 バイトのデータを往復 memcached の場合と 単純なデータの往復の場合の 差は⼤きくない TCP で ping-pong のように データを往復させるだけの場合は 約 250 K リクエスト毎秒
応答処理を構成する主な要素 memcached サーバー クライアント key: “foo” value: “bar” key: “hoge”
value: “moge” 時間 キー“hoge”に対応する バリューを教えてください TCP/IP 受信処理 memcached プロトコル パース キー バリュー 検索 memcached プロトコル 応答⽣成 “moge” です TCP/IP 送信処理 memcached の場合と 単純なデータの往復の場合の 差は⼤きくない
応答処理を構成する主な要素 memcached サーバー クライアント key: “foo” value: “bar” key: “hoge”
value: “moge” 時間 キー“hoge”に対応する バリューを教えてください TCP/IP 受信処理 memcached プロトコル パース キー バリュー 検索 memcached プロトコル 応答⽣成 “moge” です TCP/IP 送信処理 これらのための処理時間の⽐率はおそらく⼩さい memcached の場合と 単純なデータの往復の場合の 差は⼤きくない
応答処理を構成する主な要素 memcached サーバー クライアント key: “foo” value: “bar” key: “hoge”
value: “moge” 時間 キー“hoge”に対応する バリューを教えてください “moge” です これらのための処理時間の⽐率はおそらく⼩さい memcached の場合と 単純なデータの往復の場合の 差は⼤きくない TCP/IP 受信処理 TCP/IP 送信処理 イメージとしてはこんな感じ
応答処理を構成する主な要素 memcached サーバー クライアント key: “foo” value: “bar” key: “hoge”
value: “moge” 時間 キー“hoge”に対応する バリューを教えてください “moge” です TCP/IP 受信処理 TCP/IP 送信処理 TCP/IP 通信の処理時間を短くできれば単位時間あたりに もっとたくさんのリクエストに応答できるのでは?
応答処理を構成する主な要素 memcached サーバー クライアント key: “foo” value: “bar” key: “hoge”
value: “moge” 時間 キー“hoge”に対応する バリューを教えてください “moge” です TCP/IP 通信の処理時間を短くできれば単位時間あたりに もっとたくさんのリクエストに応答できるのでは? イメージとしてはこんな感じ
既存の memcached 実装の構成 TCP/IP スタック memcached プロトコルパーサー キーバリュー操作 NIC デバイスドライバ
memcached ユーザー空間 カーネル
既存の memcached 実装の構成 TCP/IP スタック memcached プロトコルパーサー キーバリュー操作 NIC デバイスドライバ
memcached ユーザー空間 カーネル 研究コミュニティでは 汎⽤ OS の TCP/IP スタック実装の 性能の改善の余地が指摘されている
mimicached: memcached 互換サーバー TCP/IP スタック memcached プロトコルパーサー キーバリュー操作 NIC デバイスドライバ
memcached ユーザー空間 カーネル TCP/IP スタック memcached プロトコルパーサー キーバリュー操作 NIC デバイスドライバ mimicached ユーザー空間 主な構成要素を全てユーザー空間に配置
mimicached: memcached 互換サーバー TCP/IP スタック memcached プロトコルパーサー キーバリュー操作 NIC デバイスドライバ
mimicached 主な構成要素を全てユーザー空間に配置 性能に最適化された実装を利⽤ ポイント
mimicached: memcached 互換サーバー TCP/IP スタック memcached プロトコルパーサー キーバリュー操作 NIC デバイスドライバ
mimicached https://github.com/yasukata/memcached-protocol-parser https://github.com/yasukata/iip https://github.com/yasukata/mimicached DPDK を利⽤ ⾃作ハッシュテーブル実装 ⾃作プロトコルパーサー実装 iip: ⾃作 TCP/IP スタック実装 https://github.com/yasukata/iip-dpdk
mimicached: memcached 互換サーバー TCP/IP スタック memcached プロトコルパーサー キーバリュー操作 NIC デバイスドライバ
mimicached ⾃作 memcached 互換サーバー https://github.com/yasukata/memcached-protocol-parser https://github.com/yasukata/iip https://github.com/yasukata/mimicached ⾃作ハッシュテーブル実装 ⾃作プロトコルパーサー実装 iip: ⾃作 TCP/IP スタック実装 0 50000 100000 150000 200000 250000 300000 1 スループット [リクエスト毎秒] CPU コア数 memcached TCP ping-pong (Linux TCP) DPDK を利⽤ https://github.com/yasukata/iip-dpdk
mimicached: memcached 互換サーバー TCP/IP スタック memcached プロトコルパーサー キーバリュー操作 NIC デバイスドライバ
mimicached ⾃作 memcached 互換サーバー https://github.com/yasukata/memcached-protocol-parser https://github.com/yasukata/iip https://github.com/yasukata/mimicached ⾃作ハッシュテーブル実装 ⾃作プロトコルパーサー実装 iip: ⾃作 TCP/IP スタック実装 0 50000 100000 150000 200000 250000 300000 1 スループット [リクエスト毎秒] CPU コア数 memcached TCP ping-pong (Linux TCP) DPDK を利⽤ https://github.com/yasukata/iip-dpdk Linux カーネルの TCP/IP スタックを利⽤
mimicached: memcached 互換サーバー TCP/IP スタック memcached プロトコルパーサー キーバリュー操作 NIC デバイスドライバ
mimicached ⾃作 memcached 互換サーバー https://github.com/yasukata/memcached-protocol-parser https://github.com/yasukata/iip https://github.com/yasukata/mimicached ⾃作ハッシュテーブル実装 ⾃作プロトコルパーサー実装 iip: ⾃作 TCP/IP スタック実装 0 500000 1000000 1500000 2000000 2500000 3000000 1 スループット [リクエスト毎秒] CPU コア数 memcached TCP ping-pong (Linux TCP) TCP ping-pong (iip) DPDK を利⽤ https://github.com/yasukata/iip-dpdk Linux カーネルの TCP/IP スタックを利⽤
mimicached: memcached 互換サーバー TCP/IP スタック memcached プロトコルパーサー キーバリュー操作 NIC デバイスドライバ
mimicached ⾃作 memcached 互換サーバー https://github.com/yasukata/memcached-protocol-parser https://github.com/yasukata/iip https://github.com/yasukata/mimicached ⾃作ハッシュテーブル実装 ⾃作プロトコルパーサー実装 iip: ⾃作 TCP/IP スタック実装 0 500000 1000000 1500000 2000000 2500000 3000000 1 スループット [リクエスト毎秒] CPU コア数 memcached TCP ping-pong (Linux TCP) TCP ping-pong (iip) 約 3 M 約 250 K DPDK を利⽤ https://github.com/yasukata/iip-dpdk 単純な TCP メッセージの 往復では 10 倍以上の 性能向上
mimicached: memcached 互換サーバー TCP/IP スタック memcached プロトコルパーサー キーバリュー操作 NIC デバイスドライバ
mimicached ⾃作 memcached 互換サーバー https://github.com/yasukata/memcached-protocol-parser https://github.com/yasukata/iip https://github.com/yasukata/mimicached ⾃作ハッシュテーブル実装 ⾃作プロトコルパーサー実装 iip: ⾃作 TCP/IP スタック実装 0 10000000 20000000 30000000 40000000 50000000 60000000 70000000 1 16 32 スループット [リクエスト毎秒] CPU コア数 memcached TCP ping-pong (Linux TCP) TCP ping-pong (iip) マルチコア環境 でも⾼い性能 DPDK を利⽤ https://github.com/yasukata/iip-dpdk
mimicached: memcached 互換サーバー TCP/IP スタック memcached プロトコルパーサー キーバリュー操作 NIC デバイスドライバ
mimicached ⾃作 memcached 互換サーバー https://github.com/yasukata/memcached-protocol-parser https://github.com/yasukata/iip https://github.com/yasukata/mimicached ⾃作ハッシュテーブル実装 ⾃作プロトコルパーサー実装 iip: ⾃作 TCP/IP スタック実装 0 10000000 20000000 30000000 40000000 50000000 60000000 70000000 1 16 32 スループット [リクエスト毎秒] CPU コア数 memcached TCP ping-pong (Linux TCP) TCP ping-pong (iip) マルチコア環境 でも⾼い性能 DPDK を利⽤ https://github.com/yasukata/iip-dpdk なんでそんなに速くなるの?と思われましたら https://www.iij.ad.jp/dev/report/iir/060/02.html https://eng-blog.iij.ad.jp/archives/25852 https://speakerdeck.com/yasukata/nic-nogao-su-hua-tosisutemusohutoueayan-jiu-2010-nian-kuraikaranozhen-rifan-ri 関連研究について ⾃作 TCP/IP スタック実装について
mimicached: memcached 互換サーバー TCP/IP スタック memcached プロトコルパーサー キーバリュー操作 NIC デバイスドライバ
mimicached ⾃作 memcached 互換サーバー https://github.com/yasukata/memcached-protocol-parser https://github.com/yasukata/iip https://github.com/yasukata/mimicached ⾃作ハッシュテーブル実装 ⾃作プロトコルパーサー実装 iip: ⾃作 TCP/IP スタック実装 0 10000000 20000000 30000000 40000000 50000000 60000000 70000000 1 16 32 スループット [リクエスト毎秒] CPU コア数 memcached TCP ping-pong (Linux TCP) TCP ping-pong (iip) マルチコア環境 でも⾼い性能 DPDK を利⽤ https://github.com/yasukata/iip-dpdk この TCP/IP スタックを使うと memcached のワークロードは どれくらい速くなる?
0 500000 1000000 1500000 2000000 1 スループット [リクエスト毎秒] CPU コア数
memcached mimicached 計測結果 キーバリューペア数:1000 件 リクエストの分布:⼀様にランダム SET/GET ⽐率:GET 100 % (全件ヒット) キーサイズ:8バイト バリューサイズ:8バイト 並列 TCP 接続数:1 CPUコアあたり 32 接続
0 10000000 20000000 30000000 40000000 50000000 1 16 32 スループット
[リクエスト毎秒] CPU コア数 memcached mimicached 計測結果 キーバリューペア数:1000 件 リクエストの分布:⼀様にランダム SET/GET ⽐率:GET 100 % (全件ヒット) キーサイズ:8バイト バリューサイズ:8バイト 並列 TCP 接続数:1 CPUコアあたり 32 接続
0 10000000 20000000 30000000 40000000 50000000 1 16 32 スループット
[リクエスト毎秒] CPU コア数 memcached mimicached 計測結果 キーバリューペア数:1000 件 リクエストの分布:⼀様にランダム SET/GET ⽐率:GET 100 % (全件ヒット) キーサイズ:8バイト バリューサイズ:8バイト 並列 TCP 接続数:1 CPUコアあたり 32 接続 10 倍以上のスループットの向上
0 10000000 20000000 30000000 40000000 50000000 1 16 32 スループット
[リクエスト毎秒] CPU コア数 memcached mimicached 計測結果 キーバリューペア数:1000 件 リクエストの分布:⼀様にランダム SET/GET ⽐率:GET 100 % (全件ヒット) キーサイズ:8バイト バリューサイズ:8バイト 並列 TCP 接続数:1 CPUコアあたり 32 接続 注意:向上率はワークロード依存 以下はキーバリュー操作時間が短く ⽐較的⼤きな向上率になりやすい ワークロード設定 10 倍以上のスループットの向上
0 10000000 20000000 30000000 40000000 50000000 1 16 32 スループット
[リクエスト毎秒] CPU コア数 memcached mimicached 計測結果 キーバリューペア数:1000 件 リクエストの分布:⼀様にランダム SET/GET ⽐率:GET 100 % (全件ヒット) キーサイズ:8バイト バリューサイズ:8バイト 並列 TCP 接続数:1 CPUコアあたり 32 接続 注意:向上率はワークロード依存 以下はキーバリュー操作時間が短く ⽐較的⼤きな向上率になりやすい ワークロード設定 他のワークロード設定でも概ね ⼤きな性能の改善は⾒られます 10 倍以上のスループットの向上
世界最速級? • 個⼈の観測範囲では、以下のカテゴリにおいては世界最速級 • 実装のカテゴリ • TCP 接続を介した memcached リクエストに応答できる
• CPU が TCP/IP スタックと memcached の処理を実⾏する
世界最速級? • 個⼈の観測範囲では、以下のカテゴリにおいては世界最速級 • 実装のカテゴリ • TCP 接続を介した memcached リクエストに応答できる
• CPU が TCP/IP スタックと memcached の処理を実⾏する • そのように考える理由 • ⾼速な TCP/IP スタック実装を使った上記カテゴリの実装がそもそも少ない
世界最速級? • 個⼈の観測範囲では、以下のカテゴリにおいては世界最速級 • 実装のカテゴリ • TCP 接続を介した memcached リクエストに応答できる
• CPU が TCP/IP スタックと memcached の処理を実⾏する • そのように考える理由 • ⾼速な TCP/IP スタック実装を使った上記カテゴリの実装がそもそも少ない • ⾼速な TCP/IP スタックを使って何かを作ると雑に世界最速級を名乗れそう
世界最速級? • 個⼈の観測範囲では、以下のカテゴリにおいては世界最速級 • 実装のカテゴリ • TCP 接続を介した memcached リクエストに応答できる
• CPU が TCP/IP スタックと memcached の処理を実⾏する • そのように考える理由 • ⾼速な TCP/IP スタック実装を使った上記カテゴリの実装がそもそも少ない • ⾼速な TCP/IP スタックを使って何かを作ると雑に世界最速級を名乗れそう • ⼿元の計測では、iip 単体の性能は他の⾼速な実装と⽐べても低くない • https://github.com/yasukata/bench-iip?tab=readme-ov-file#performance-numbers-of-other-tcpip-stacks
世界最速級? • 個⼈の観測範囲では、以下のカテゴリにおいては世界最速級 • 実装のカテゴリ • TCP 接続を介した memcached リクエストに応答できる
• CPU が TCP/IP スタックと memcached の処理を実⾏する • そのように考える理由 • ⾼速な TCP/IP スタック実装を使った上記カテゴリの実装がそもそも少ない • ⾼速な TCP/IP スタックを使って何かを作ると雑に世界最速級を名乗れそう • ⼿元の計測では、iip 単体の性能は他の⾼速な実装と⽐べても低くない • https://github.com/yasukata/bench-iip?tab=readme-ov-file#performance-numbers-of-other-tcpip-stacks 他のこっちの実装の⽅が圧倒的に速そうなどありましたら 改善の参考にしたいので是⾮教えていただきたいです
注意:実装の優劣について • キャッシュサーバーの性能の指標はスループットだけではない • 例:計算コストの⾼いキャッシュ追い出しアルゴリズムが応答速度を 低下させたとしても、キャッシュヒット率の⾼さから、キャッシュ サーバーを利⽤するシステム全体の性能が⾼い場合は考えられる • ワークロードや利⽤可能なメモリの容量にも影響される •
特定の指標だけで実装の優劣を判断するのはおそらく不適切で あるという点にご注意ください
まとめ • ⾼速な TCP/IP スタックを利⽤することで⾼いスループットを 達成可能な memcached 互換サーバーを作りました • ⾼速化により、各環境において⽬標とされる応答性能の達成に必要な
計算機リソースを削減する効果が期待できると思われます • インターンシップのご案内 • 本発表の実装には機能および性能⾯で改善の余地があると考えており ⼀緒に改善に取り組んでくださる学⽣の⽅を募集しております • 募集ページ:https://www.iijlab.net/career/internship.html • 応募締切: 2026 年 1 ⽉ 31 ⽇