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
RedisのCPU負荷対策パターン
by id:y_uuki
Yuuki Tsubouchi (yuuk1)
August 19, 2017
More Decks by Yuuki Tsubouchi (yuuk1)
See All by Yuuki Tsubouchi (yuuk1)
SAKURAONE:An Open Ethernet-based AI HPC System And Its Observed Workload Dynamicsin a Single-Tenant LLM Development Environment
yuukit
1
76
AIスーパーコンピュータにおけるLLM学習処理性能の計測と可観測性 / AI Supercomputer LLM Benchmarking and Observability
yuukit
1
880
SREはサイバネティクスの夢をみるか? / Do SREs Dream of Cybernetics?
yuukit
3
500
SREのためのテレメトリー技術の探究 / Telemetry for SRE
yuukit
13
3.6k
AIスパコン「さくらONE」の オブザーバビリティ / Observability for AI Supercomputer SAKURAONE
yuukit
2
1.4k
AIスパコン「さくらONE」のLLM学習ベンチマークによる性能評価 / SAKURAONE LLM Training Benchmarking
yuukit
2
1.1k
とあるSREの博士「過程」 / A Certain SRE’s Ph.D. Journey
yuukit
11
7k
eBPFを用いたAIネットワーク監視システム論文の実装 / eBPF Japan Meetup #4
yuukit
3
1.8k
クラウドのテレメトリーシステム研究動向2025年
yuukit
4
1.2k
Other Decks in Programming
See All in Programming
Swiftのレキシカルスコープ管理
kntkymt
0
200
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
1
400
Inspired By RubyKaigi (EN)
atzzcokek
0
170
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
4
1.1k
ECR拡張スキャンでSBOMを収集して サプライチェーン攻撃の影響調査を 爆速で終わらせてみた
akihisaikeda
2
200
Hive Metastoreを通して学ぶIceberg REST Catalog ― 仕様から実装まで
okumin
0
290
inferと仲良くなる10分間
ryokatsuse
1
270
OSもどきOS
arkw
0
250
RTSPクライアントを自作してみた話
simotin13
0
290
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.1k
ビジネスモデルから紐解く、AI+型駆動開発
hirokiomote
2
3.4k
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
200
Featured
See All Featured
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
270
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
190
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
390
Are puppies a ranking factor?
jonoalderson
1
3.4k
How to Ace a Technical Interview
jacobian
281
24k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
44k
Claude Code のすすめ
schroneko
67
220k
The Cult of Friendly URLs
andyhume
79
6.9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Ruling the World: When Life Gets Gamed
codingconduct
0
240
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)
ޠ͔Βઓུ
ઓུΛཱͯΔͨΊʹ ͱΓ͏Δઓज़Λ ͓ͬͯ͘