Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Linuxの先読みキャッシング read_ahead_kb

この記事面白すぎる!

先読み

必要なデータをユーザから要求があるたびに同期的に読み込んでいると、ディスクの I/O 待ちに時間がかかる。そのため、 I/O 要求がシーケンシャルリードだと判断した時点で要求されていない後続のブロックを先読みしておき、キャッシュを充実させる。先読みしたデータは使われるかもしれないし、無駄になるかもしれない。
先読みすることでどの程度効率化されているかを動作確認する。
https://www.kimullaa.com/entry/2019/12/01/130347

#// 先読みが有効であることを確認する
cat /sys/block/sda/queue/read_ahead_kb

# cache削除
echo 3 > /proc/sys/vm/drop_caches

# (先読みあり) 読み込み速度計測
time dd if=/dev/sda of=/dev/null bs=10M count=100

#先読みを無効にする
echo 0 > /sys/block/sda/queue/read_ahead_kb

# cache削除
echo 3 > /proc/sys/vm/drop_caches

# (先読みなし)読み込み速度計測
time dd if=/dev/sda of=/dev/null bs=10M count=100

result

image.png

[root@localhost test]# cat /sys/block/sda/queue/read_ahead_kb
4096
[root@localhost test]# echo 3 > /proc/sys/vm/drop_caches
[root@localhost test]# time dd if=/dev/sda of=/dev/null bs=10M count=100
100+0 records in
100+0 records out
1048576000 bytes (1.0 GB) copied, 1.53053 s, 685 MB/s

real    0m1.566s
user    0m0.000s
sys 0m1.074s
[root@localhost test]# #先読みを無効にする
[root@localhost test]# echo 0 > /sys/block/sda/queue/read_ahead_kb
[root@localhost test]# echo 3 > /proc/sys/vm/drop_caches
[root@localhost test]# time dd if=/dev/sda of=/dev/null bs=10M count=100
100+0 records in
100+0 records out
1048576000 bytes (1.0 GB) copied, 37.3734 s, 28.1 MB/s

real    0m37.386s
user    0m0.001s
sys 0m25.442s
[root@localhost test]#
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away