mongodb 中的预读代表什么?
What does readahead in mongodb stands for?
我在 mongodb、
收到此警告
WARNING: Readahead for /data is set to 1024KB
We suggest setting it to 256KB (512 sectors) or less
http://dochub.mongodb.org/core/readahead
查询时,每个 link 建议将 readahead 值设置为较小的数字,如何设置?
我知道将它设置为较小的值可以让我摆脱警告,但我更感兴趣的是预读代表什么?如果我将它设置为更高的值会有什么影响?
预读是一个内核特性,它在块设备级别工作并且是全局的(不依赖于进程)。
这是一种旨在提高文件读取性能的技术。如果内核有理由相信一个特定的文件正在被顺序读取,它会在应用程序请求它们之前尝试从文件中读取块到内存中。当预读工作时,它会加快系统的吞吐量,因为读取应用程序不必等待它的请求。相反,当预读失败时,它会生成无用的 I/O 并占用用于其他目的的内存页面。 (https://lwn.net/Articles/155510/)
这里有更深入的解释 -> http://man7.org/linux/man-pages/man2/readahead.2.html
为了解决这个问题,请确保存储数据库文件的块设备的预读设置是适当的。对于随机访问使用模式,设置较低的预读值。 32 (16 kB) 的预读通常效果很好。
在Linux中:
以 root 身份登录 -> su -
运行 sudo blockdev --report
获取预读设置
运行 sudo blockdev --setra <value> <device>
更改预读设置
我在 mongodb、
收到此警告WARNING: Readahead for /data is set to 1024KB
We suggest setting it to 256KB (512 sectors) or less
http://dochub.mongodb.org/core/readahead
查询时,每个 link 建议将 readahead 值设置为较小的数字,如何设置?
我知道将它设置为较小的值可以让我摆脱警告,但我更感兴趣的是预读代表什么?如果我将它设置为更高的值会有什么影响?
预读是一个内核特性,它在块设备级别工作并且是全局的(不依赖于进程)。 这是一种旨在提高文件读取性能的技术。如果内核有理由相信一个特定的文件正在被顺序读取,它会在应用程序请求它们之前尝试从文件中读取块到内存中。当预读工作时,它会加快系统的吞吐量,因为读取应用程序不必等待它的请求。相反,当预读失败时,它会生成无用的 I/O 并占用用于其他目的的内存页面。 (https://lwn.net/Articles/155510/)
这里有更深入的解释 -> http://man7.org/linux/man-pages/man2/readahead.2.html
为了解决这个问题,请确保存储数据库文件的块设备的预读设置是适当的。对于随机访问使用模式,设置较低的预读值。 32 (16 kB) 的预读通常效果很好。
在Linux中:
以 root 身份登录 ->
su -
运行
sudo blockdev --report
获取预读设置运行
sudo blockdev --setra <value> <device>
更改预读设置