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
RedisのCPU負荷対策パターン
Search
Yuuki Tsubouchi (yuuk1)
August 19, 2017
Programming
30k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RedisのCPU負荷対策パターン
by id:y_uuki
Yuuki Tsubouchi (yuuk1)
August 19, 2017
More Decks by Yuuki Tsubouchi (yuuk1)
See All by Yuuki Tsubouchi (yuuk1)
「アラーティング」の話をしよう— SREconや論文等の最先端とのギャップをみる
yuukit
7
1.9k
SAKURAONE:An Open Ethernet-based AI HPC System And Its Observed Workload Dynamicsin a Single-Tenant LLM Development Environment
yuukit
1
540
AIスーパーコンピュータにおけるLLM学習処理性能の計測と可観測性 / AI Supercomputer LLM Benchmarking and Observability
yuukit
1
1.1k
SREはサイバネティクスの夢をみるか? / Do SREs Dream of Cybernetics?
yuukit
3
680
SREのためのテレメトリー技術の探究 / Telemetry for SRE
yuukit
13
3.8k
AIスパコン「さくらONE」の オブザーバビリティ / Observability for AI Supercomputer SAKURAONE
yuukit
2
1.5k
AIスパコン「さくらONE」のLLM学習ベンチマークによる性能評価 / SAKURAONE LLM Training Benchmarking
yuukit
2
1.2k
とあるSREの博士「過程」 / A Certain SRE’s Ph.D. Journey
yuukit
11
7.4k
eBPFを用いたAIネットワーク監視システム論文の実装 / eBPF Japan Meetup #4
yuukit
3
1.8k
Other Decks in Programming
See All in Programming
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
360
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
200
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
240
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
160
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
200
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
190
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
250
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
440
MySQLとPostgreSQLって何が違うの?
akagami
0
130
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
590
FastAPI の並行処理モデルを完全に理解する
hoto17296
8
2.9k
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
570
Featured
See All Featured
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
270
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
630
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
580
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
480
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.8k
Designing for humans not robots
tammielis
254
26k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
Mind Mapping
helmedeiros
PRO
1
330
Exploring anti-patterns in Rails
aemeredith
3
470
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
250
Transcript
ͦͯ͠ޠ Կ͔ͷRedis CPU ෛՙରࡦΛܴ͑Δ
None
RedisͷCPUෛՙରࡦ ύλʔϯ id:y_uuki Kyoto.ͳΜ͔#3
Redis ͔ͭͬͯ·͔͢ʁ
None
RedisͰCPUফඅ͕ϘτϧωοΫʹͳΔέʔε • ܦݧతʹඵؒສίϚϯυ҆ • ΫΤϦͷछྨΞΫηεύλʔϯʹΑͬͯɺ ಉ͡ϋʔυΣΞͰ͋ͬͯCPUར༻ม Խ͢Δ • CPUੑೳʹΑͬͯɺಉ͡ϫʔΫϩʔυͰ͋ͬ ͯCPUར༻มԽ͢Δ
RedisͷCPUϦιʔεফඅߏ • γϯάϧεϨουͰಈ࡞͢ΔͨΊɺϚϧνί ΞڥͰ͋ͬͯɺ1CPUίΞ͔͑͠ͳ͍ • MySQL/PostgreSQLίωΫγϣϯ͝ͱʹ εϨου/ϓϩηεΛىಈ͢ΔϚϧνεϨο υ/ϓϩηεϞσϧ
RedisͷCPUෛՙͱઓ͏ͨΊʹ ͲͷΑ͏ͳ࡞ઓΛͱΓ͏Δ͔
εέʔϧΞοϓ εέʔϧΞτ CPU1ίΞੑೳ͋͛Δ ਨׂ ࢀর༻εϨʔϒ ਫฏׂ - ࣗલ ਫฏׂ -
Redis Cluster CPUෛՙݮ RedisύΠϓϥΠϯ Lua scripting Linux RPS (Redis modules)
εέʔϧΞοϓ • RedisαʔόͷCPUΫϩοΫΛߴ͍ͷʹมߋ • EC2ͳΒc4ܥͷΠϯελϯε • ίΞΛ૿ͯ͋͠·Γҙຯͳ͍ • CPUར༻͕90%͔Β40%ʹͳͬͨ͜ͱ͕͋Δ •
Xeon E5-2650L v2 @1.70GHz (Ivy Bridge) • Xeon E5-2670 v3 @2.30GHz (Haswell) • CPUΫϩοΫʹରͯ͠ઢܗʹมԽ͢ΔΘ͚Ͱ ͳ͍
CPUෛՙݮ
CPUෛՙݮ - Linux RPS • redisεϨουͱΧʔωϧͷωοτϫʔΫI/Oε ϨουΛผʑͷίΞͰॲཧ͢Δ • RPSͰύέοτॲཧΛCPU0Ͱड͚ͯ •
redisεϨουͷCPU AffinityͰύέοτॲཧͱผ # echo ‘3’ > /sys/class/net/eth0/queues/rx-0/rps_cpus # taskset -pc 3-4 $(cat /run/redis/redis-server.pid)
None
https://speakerdeck.com/yuukit/linux-network-performance-improvement-at-hatena
CPUෛՙݮ - RedisύΠϓϥΠϯ • ΫϥΠΞϯτ͕ϨεϙϯεΛ·ͨͣʹޙଓͷϦΫΤετ Λೖ͢Δ͜ͱͰɺύέοτԟ෮ճΛݮΒ͢ • ωοτϫʔΫI/OॲཧΛ·ͱΊ࣮ͯߦͰ͖ΔͷͰɺCPU ॲཧ͕ݮΔ •
1ճͷread(2)ͰෳͷίϚϯυΛಡΈग़ͤΔͷͰɺγ εςϜίʔϧճ͕ݮΓίϯςΩετεΠονݮΔ • ਅͷRedisύΠϓϥΠϯ(by id:ichirin2501) https://redis.io/topics/pipelining
CPUෛՙݮ - Lua scripting • ͋ΔίϚϯυͷ݁ՌΛ࣍ͷίϚϯυ͕ར༻͠ ͍ͯΔҰ࿈ͷίϚϯυྻύΠϓϥΠϯ࣮ߦ ෆՄ • Lua
scriptingͳΒҰ࿈ͷίϚϯυྻΛluaίʔ υͱͯ͠ૹΓࠐΈɺ݁Ռ͚ͩड͚औΕΔ • ύΠϓϥΠϯಉ༷ɺΫϥΠΞϯτͱͷԟ෮ճ ͕ݮΓɺI/OγεςϜίʔϧΛ·ͱΊΒΕΔ https://redis.io/commands/eval
None
εέʔϧΞτ
εέʔϧΞτ-ࢀর༻εϨʔϒ • RedisϚελʔɾεϨʔϒߏ͕ͱΕΔ • ࢀরΫΤϦΛεϨʔϒʹ͚ͯϚελʔͷෛՙΛ ݮ • εϨʔϒͷલஈʹϩʔυόϥϯα͕ඞཁ • MySQLͳͲͷRDBMSͰΑ͘ͱΒΕΔ࡞ઓ
• ϨϓϦέʔγϣϯԆʹҙ • ॻ͖ࠐΜͩͣͷσʔλ͕·ͩεϨʔϒʹൖ ͍ͯ͠ͳ͍Մೳੑ͕͋Δ
εέʔϧΞτ- ਨׂ • RedisͷϚελʔϊʔυΛෳ༻ҙ͢Δ • ػೳAϚελʔ1Λ͏ɺػೳBϚελʔ2Λ ͏ • ػೳͷͿΜ͚ͩɺϚελʔϊʔυΛӡ༻͢Δίε τ͋Δ
• ͋ΔҰͭػೳͷෛՙ͕ࢧతͳ߹ʹ͑ͳ͍ • Ωϟογϡ༻్ͳΒ͚ͦͩ͜memcachedΛར༻
εέʔϧΞτ- ਫฏׂ • γϟʔσΟϯάͱݺͿ • ಉ͡༻్ͷ֤ΩʔΛෳͷϚελʔϊʔυʹࢄ • ΩʔͱϊʔυͷϚοϐϯάΛࣗͰΔ • Ϛοϐϯάํ๏༷ʑ
• ϢʔβID xxx ϊʔυYʹϚοϓ • ϢʔβID yyy ͷ༨͕ z ͳΒϊʔυXʹϚοϓ • γϟʔυΛ૿ݮͨ͠ͱ͖ͷσʔλ࠶ஔ͕͢͠ ͗ΔͷͰͱʹ͔͘Γͨ͘ͳ͍
εέʔϧΞτ- Redis ClusterʹΑΔਫฏׂ • ࠷ऴԞٛ • Ωʔͷࢄஔͱ࠶ஔ/ϑΣΠϧΦʔόʔͳͲα ϙʔτ • redis-tribͱ͍͏ެࣜπʔϧͰࣗಈ࠶ஔͰ͖Δ
• ࠷6ϊʔυඞཁ • database͕1͔͔ͭ͑͠ͳ͍ • ෳΩʔʹର͢ΔίϚϯυ࣮ߦʹҙ • 1000ϊʔυ͙Β͍·Ͱεέʔϧ͢ΔΒ͍͠
ເ
Redis modules • Redus 4.0͔ΒϞδϡʔϧػೳ͕࣮͞Εͨ • Redisͷ෦APIΛͬͯಠࣗͷσʔλߏ ίϚϯυΛ࣮Ͱ͖ΔʢΒ͍͠ʣ • ΞϓϦέʔγϣϯʹ࠷దԽͨ͠σʔλߏΛ
࡞ΕɺΊͪΌͪ͘ΌCPUޮΑ͘ͳΔͷͰ ʁʁʁʁʁ
εέʔϧΞοϓ εέʔϧΞτ CPU1ίΞੑೳ͋͛Δ ਨׂ ࢀর༻εϨʔϒ ਫฏׂ Redis Cluster CPUෛՙݮ RedisύΠϓϥΠϯ
Lua scripting Linux RPS (Redis modules)
ޠ͔Βઓུ
ઓུΛཱͯΔͨΊʹ ͱΓ͏Δઓज़Λ ͓ͬͯ͘