Skip to content

Commit e52a9b1

Browse files
committed
wal: hint sequential reads when reading WAL files
When reading WAL files, pass the vfs.SequentialReadsOption option to indicate that reads will be sequential. This enables OS-mediated readahead on Linux.
1 parent 43d95d5 commit e52a9b1

File tree

4 files changed

+12
-12
lines changed

4 files changed

+12
-12
lines changed

testdata/checkpoint

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ close: checkpoints/checkpoint1/MANIFEST-000001
332332
open-dir: checkpoints/checkpoint1
333333
open: checkpoints/checkpoint1/OPTIONS-000003
334334
close: checkpoints/checkpoint1/OPTIONS-000003
335-
open: checkpoints/checkpoint1/000006.log
335+
open: checkpoints/checkpoint1/000006.log (options: *vfs.sequentialReadsOption)
336336
close: checkpoints/checkpoint1/000006.log
337337

338338
scan checkpoints/checkpoint1
@@ -399,7 +399,7 @@ close: checkpoints/checkpoint2/MANIFEST-000001
399399
open-dir: checkpoints/checkpoint2
400400
open: checkpoints/checkpoint2/OPTIONS-000003
401401
close: checkpoints/checkpoint2/OPTIONS-000003
402-
open: checkpoints/checkpoint2/000006.log
402+
open: checkpoints/checkpoint2/000006.log (options: *vfs.sequentialReadsOption)
403403
close: checkpoints/checkpoint2/000006.log
404404

405405
scan checkpoints/checkpoint2
@@ -441,7 +441,7 @@ close: checkpoints/checkpoint3/MANIFEST-000001
441441
open-dir: checkpoints/checkpoint3
442442
open: checkpoints/checkpoint3/OPTIONS-000003
443443
close: checkpoints/checkpoint3/OPTIONS-000003
444-
open: checkpoints/checkpoint3/000006.log
444+
open: checkpoints/checkpoint3/000006.log (options: *vfs.sequentialReadsOption)
445445
close: checkpoints/checkpoint3/000006.log
446446

447447
scan checkpoints/checkpoint3
@@ -584,7 +584,7 @@ close: checkpoints/checkpoint4/MANIFEST-000001
584584
open-dir: checkpoints/checkpoint4
585585
open: checkpoints/checkpoint4/OPTIONS-000003
586586
close: checkpoints/checkpoint4/OPTIONS-000003
587-
open: checkpoints/checkpoint4/000008.log
587+
open: checkpoints/checkpoint4/000008.log (options: *vfs.sequentialReadsOption)
588588
close: checkpoints/checkpoint4/000008.log
589589

590590
scan checkpoints/checkpoint4
@@ -699,7 +699,7 @@ close: checkpoints/checkpoint5/MANIFEST-000001
699699
open-dir: checkpoints/checkpoint5
700700
open: checkpoints/checkpoint5/OPTIONS-000003
701701
close: checkpoints/checkpoint5/OPTIONS-000003
702-
open: checkpoints/checkpoint5/000008.log
702+
open: checkpoints/checkpoint5/000008.log (options: *vfs.sequentialReadsOption)
703703
close: checkpoints/checkpoint5/000008.log
704704
create: checkpoints/checkpoint5/000018.sst
705705
sync-data: checkpoints/checkpoint5/000018.sst
@@ -800,7 +800,7 @@ close: checkpoints/checkpoint6/MANIFEST-000001
800800
open-dir: checkpoints/checkpoint6
801801
open: checkpoints/checkpoint6/OPTIONS-000003
802802
close: checkpoints/checkpoint6/OPTIONS-000003
803-
open: checkpoints/checkpoint6/000008.log
803+
open: checkpoints/checkpoint6/000008.log (options: *vfs.sequentialReadsOption)
804804
close: checkpoints/checkpoint6/000008.log
805805
create: checkpoints/checkpoint6/000018.sst
806806
sync-data: checkpoints/checkpoint6/000018.sst
@@ -1031,7 +1031,7 @@ close: checkpoints/checkpoint8/MANIFEST-000001
10311031
open-dir: checkpoints/checkpoint8
10321032
open: checkpoints/checkpoint8/OPTIONS-000003
10331033
close: checkpoints/checkpoint8/OPTIONS-000003
1034-
open: checkpoints/checkpoint8/000004.log
1034+
open: checkpoints/checkpoint8/000004.log (options: *vfs.sequentialReadsOption)
10351035
close: checkpoints/checkpoint8/000004.log
10361036

10371037
# Ensure that we can read values contained in the blob file.
@@ -1143,7 +1143,7 @@ close: checkpoints/checkpoint9/MANIFEST-000001
11431143
open-dir: checkpoints/checkpoint9
11441144
open: checkpoints/checkpoint9/OPTIONS-000003
11451145
close: checkpoints/checkpoint9/OPTIONS-000003
1146-
open: checkpoints/checkpoint9/000007.log
1146+
open: checkpoints/checkpoint9/000007.log (options: *vfs.sequentialReadsOption)
11471147
close: checkpoints/checkpoint9/000007.log
11481148

11491149
scan checkpoints/checkpoint9

testdata/checkpoint_shared

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ close: checkpoints/checkpoint1/MANIFEST-000001
315315
open-dir: checkpoints/checkpoint1
316316
open: checkpoints/checkpoint1/OPTIONS-000003
317317
close: checkpoints/checkpoint1/OPTIONS-000003
318-
open: checkpoints/checkpoint1/000006.log
318+
open: checkpoints/checkpoint1/000006.log (options: *vfs.sequentialReadsOption)
319319
close: checkpoints/checkpoint1/000006.log
320320

321321
scan checkpoints/checkpoint1
@@ -367,7 +367,7 @@ close: checkpoints/checkpoint2/MANIFEST-000001
367367
open-dir: checkpoints/checkpoint2
368368
open: checkpoints/checkpoint2/OPTIONS-000003
369369
close: checkpoints/checkpoint2/OPTIONS-000003
370-
open: checkpoints/checkpoint2/000006.log
370+
open: checkpoints/checkpoint2/000006.log (options: *vfs.sequentialReadsOption)
371371
close: checkpoints/checkpoint2/000006.log
372372

373373
scan checkpoints/checkpoint2

testdata/cleaner

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ lock: db1_wal/LOCK
247247
open-dir: db1_wal
248248
open: db1/OPTIONS-000003
249249
close: db1/OPTIONS-000003
250-
open: db1_wal/000004.log
250+
open: db1_wal/000004.log (options: *vfs.sequentialReadsOption)
251251
close: db1_wal/000004.log
252252
create: db1/MANIFEST-000458
253253
sync: db1/MANIFEST-000458

wal/reader.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ func (r *virtualWALReader) nextFile() error {
370370
r.off.PhysicalFile = path
371371
r.off.Physical = 0
372372
var err error
373-
if r.currFile, err = fs.Open(path); err != nil {
373+
if r.currFile, err = fs.Open(path, vfs.SequentialReadsOption); err != nil {
374374
return errors.Wrapf(err, "opening WAL file segment %q", path)
375375
}
376376
r.currReader = record.NewReader(r.currFile, base.DiskFileNum(r.Num))

0 commit comments

Comments
 (0)