Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
HDDへのアクセス速度は位置によって変わる!??
Search
Satoru Takeuchi
PRO
March 16, 2024
Technology
280
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
HDDへのアクセス速度は位置によって変わる!??
以下動画のテキストです。
https://youtu.be/iJHcw91MZbY
Satoru Takeuchi
PRO
March 16, 2024
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
119-多機能ファイルシステムBtrfs_のコピー.pdf
sat
PRO
1
70
Linuxカーネルの インタフェースは変わりうる?
sat
PRO
1
96
あなたの知らないバージョン命名規則
sat
PRO
3
910
Rook: Intro and Deep Dive with Ceph
sat
PRO
1
64
Machine Check Exception
sat
PRO
2
67
バイナリダンプの模様を読む
sat
PRO
0
91
cpコマンドはディスク上でデータを コピーしないことがある
sat
PRO
3
90
114-ファイルのshallow_copy.pdf
sat
PRO
2
58
113-Btrfsのスナップショット.pdf
sat
PRO
0
41
Other Decks in Technology
See All in Technology
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
5
1k
Why Agent Cost Needs Observability
nttcom
0
150
EventBridge に「合流」はない ― サーバーレスのワークフローを育てるということ / No Join in EventBridge
yusukeshimizu
2
540
AIエージェントを安全で速い現場監督にする:Jev・Obsidian・メタハーネス
x5gtrn
PRO
0
110
「どのログを見ればいい?」 から始めた サーバーレス障害解析
y_waka1
1
150
Harness Engineering on Rails
joelq
0
490
What the customer really needed
kawaguti
PRO
3
220
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
1
290
その Lambda、8分で 管理者権限まで奪われます
k1nakayama
7
3.7k
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
4
730
Making AI Agents Safe and Fast- Jev, Obsidian, and the Meta-Harness
x5gtrn
PRO
0
140
Featured
See All Featured
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
280
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
600
Thoughts on Productivity
jonyablonski
76
5.4k
Docker and Python
trallard
47
4.2k
Side Projects
sachag
456
43k
Navigating Team Friction
lara
192
16k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
240
How GitHub (no longer) Works
holman
316
150k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
290
How to Talk to Developers About Accessibility
jct
2
550
Transcript
HDDへのアクセス速度は 位置によって変わる!?? Mar. 16th, 2024 Satoru Takeuchi X: satoru_takeuchi
はなすこと • HDDへのアクセス速度がアクセスする位置によって変わることを説明 ◦ 実験 ◦ なんでそうなるか
いきなり実験! • HDDのシーケンシャル読み出し性能を測る ◦ HDDの先頭から1MiBづつ、合計128MiBのデータを読んだときのスループットを測定 ◦ 誤差を減らすために 10回測定して平均をとる • 📝
参考: データ採取に使ったコード $ cat perf.sh #!/bin/bash SUM=0 for ((i=0;i<10;i++)) ; do VAL=$(sudo dd if=/dev/sda of=/dev/null bs=1M count=128 iflag=direct 2>&1 | \ sed -nE -e 's/.*, ([0-9.]+) MB\/s$/\1/p') SUM=$((SUM+VAL)) done python3 -c "print($SUM / 10)"
いきなり実験! • HDDのシーケンシャル読み出し性能を測る ◦ HDDの先頭から1MiBづつ、合計128MiBのデータを読んだときのスループットを測定 ◦ 誤差を減らすために 10回測定して平均をとる • 📝
参考: データ採取に使ったコード $ cat perf.sh #!/bin/bash SUM=0 for ((i=0;i<10;i++)) ; do VAL=$(sudo dd if=/dev/sda of=/dev/null bs=1M count=128 iflag=direct 2>&1 | \ sed -nE -e 's/.*, ([0-9.]+) MB\/s$/\1/p') SUM=$((SUM+VAL)) done python3 -c "print($SUM / 10)" $ ./perf.sh 132.5
読み出す領域をディスクの末尾あたりにすると… • ディスク先頭から2.5TiB時点(ディスクサイズは約2.7TiB)から読み出す $ cat perf.sh #!/bin/bash SUM=0 for ((i=0;i<10;i++))
; do VAL=$(sudo dd if=/dev/sda of=/dev/null bs=1M count=128 \ iflag=direct,skip_bytes skip=2560G 2>&1 | \ sed -nE -e 's/.*, ([0-9.]+) MB\/s$/\1/p') SUM=$((SUM+VAL)) done python3 -c "print($SUM / 10)"
読み出す領域をディスクの末尾あたりにすると… • ディスク先頭から2.5TiB時点(ディスクサイズは約2.7TiB)から読み出す $ cat perf.sh #!/bin/bash SUM=0 for ((i=0;i<10;i++))
; do VAL=$(sudo dd if=/dev/sda of=/dev/null bs=1M count=128 \ iflag=direct,skip_bytes skip=2560G 2>&1 | \ sed -nE -e 's/.*, ([0-9.]+) MB\/s$/\1/p') SUM=$((SUM+VAL)) done python3 -c "print($SUM / 10)" $ ./perf.sh 113.9 14%性能劣化! 理由はHDDの性質
データはプラッタという円盤に保存される • 外側ほどセクタ(データを入れる部分)がたくさんある • ブロックデバイスのデータはオフセットが小さいほど外周に配置される セクタ
データの読み書きはスイングアームについたヘッドで 回転 回転 移動 アクセス スイングアーム ヘッド
ある量(角度)回転したとすると… • アクセスできるセクタ量はディスクの外側のほうが多い 回転 回転 90度回転すると外側は 5つ まんなかは4つ 内側は2つ
つまりどういうことかというと… • ディスクの外側のほうがアクセスできるセクタ数が多い • ディスクの外側にあるオフセットの小さいデータには高速にアクセス可能 回転 回転 90度回転すると外側は 5つ まんなかは4つ
内側は2つ
参考: いろいろなオフセットで同じことをしたグラフ
まとめ • HDDへのアクセス速度はアクセスする位置によって変わる • HDDに対応するブロックデバイスのオフセットが小さいほど高速にアクセス可能 • 理由はHDDの特性 ◦ プラッタの外周ほどセクタ数が多い ◦
オフセットが小さいデータほど、プラッタの外周にあるセクタに配置される ◦ プラッタをある角度だけ回転させると、外周にあるデータほど高速にアクセスできる ◦ オフセットが小さいところのデータほど高速にアクセスできる