mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
app/vmselect/netstorage: hint the OS that tmpBlocksFile is read almost sequentially
This became the case after b7ee2e7af2
.
This commit is contained in:
parent
c1d3705be0
commit
4e9e1ca0f7
4 changed files with 11 additions and 8 deletions
|
@ -4,6 +4,6 @@ import (
|
||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
func mustFadviseRandomRead(f *os.File) {
|
func mustFadviseSequentialRead(f *os.File) {
|
||||||
// Do nothing :)
|
// Do nothing :)
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,9 +7,9 @@ import (
|
||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
)
|
)
|
||||||
|
|
||||||
func mustFadviseRandomRead(f *os.File) {
|
func mustFadviseSequentialRead(f *os.File) {
|
||||||
fd := int(f.Fd())
|
fd := int(f.Fd())
|
||||||
if err := unix.Fadvise(int(fd), 0, 0, unix.FADV_RANDOM|unix.FADV_WILLNEED); err != nil {
|
if err := unix.Fadvise(int(fd), 0, 0, unix.FADV_SEQUENTIAL|unix.FADV_WILLNEED); err != nil {
|
||||||
logger.Panicf("FATAL: error returned from unix.Fadvise(RANDOM|WILLNEED): %s", err)
|
logger.Panicf("FATAL: error returned from unix.Fadvise(SEQUENTIAL|WILLNEED): %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,9 +7,9 @@ import (
|
||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
)
|
)
|
||||||
|
|
||||||
func mustFadviseRandomRead(f *os.File) {
|
func mustFadviseSequentialRead(f *os.File) {
|
||||||
fd := int(f.Fd())
|
fd := int(f.Fd())
|
||||||
if err := unix.Fadvise(int(fd), 0, 0, unix.FADV_RANDOM|unix.FADV_WILLNEED); err != nil {
|
if err := unix.Fadvise(int(fd), 0, 0, unix.FADV_SEQUENTIAL|unix.FADV_WILLNEED); err != nil {
|
||||||
logger.Panicf("FATAL: error returned from unix.Fadvise(RANDOM|WILLNEED): %s", err)
|
logger.Panicf("FATAL: error returned from unix.Fadvise(SEQUENTIAL|WILLNEED): %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,7 +125,10 @@ func (tbf *tmpBlocksFile) Finalize() error {
|
||||||
if _, err := tbf.f.Seek(0, 0); err != nil {
|
if _, err := tbf.f.Seek(0, 0); err != nil {
|
||||||
logger.Panicf("FATAL: cannot seek to the start of file: %s", err)
|
logger.Panicf("FATAL: cannot seek to the start of file: %s", err)
|
||||||
}
|
}
|
||||||
mustFadviseRandomRead(tbf.f)
|
// Hint the OS that the file is read almost sequentiallly.
|
||||||
|
// This should reduce the number of disk seeks, which is important
|
||||||
|
// for HDDs.
|
||||||
|
mustFadviseSequentialRead(tbf.f)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue