Commit Graph
23 Commits
Author SHA1 Message Date
xzfc 916d84a2aa MADV_POPULATE_READ on sequential mmaps (#6923) 2025-07-24 08:46:18 +02:00
Luis Cossío 76c37fecac use seq mmap in iter (#6750)
Also refactor to use const generics
2025-07-17 13:24:37 +02:00
Luis Cossío c2a2bfd681 [gridstore] update a selection instead of a range of regions (#6713)
* update a selection instead of a range of regions

* extend instead of loop

* use div_ceil to calculate region_id range
2025-07-17 13:19:21 +02:00
Roman Titov 422bce5ef0 Implement immutable_files method for segment sub-structures (#6637) 2025-07-17 13:10:08 +02:00
Luis Cossío f4050263ac flush before dropping in ignored test (#6688) 2025-07-17 13:09:46 +02:00
Tim Visée 1c392b9aad Add mutable geo payload index on top of Gridstore (#6644)
* Add Gridstore backend for mutable geo payload index

* Add mutable geo payload index builder for Gridstore

* Add tests

* Define type for raw geo point

* Rework geo point loading in Gridstore, load per point ID

* Bump Gridstore options

* Fix panic when storing empty list of geo points in Gridstore

* Review remarks
2025-07-17 13:02:13 +02:00
Tim Visée 6f9fc64df2 Add mutable full text payload index on top of Gridstore (#6639)
* Implement clear cache for immutable text index

* Add Gridstore backend for mutable full text payload index

* Add mutable full text payload index builder for Gridstore

* Fix compilation error

* Add tests

* Extract mutable inverted index builder to standalone type

* Return generic error in Gridstore iterator

* Remove intermediate buffer from Gridstore load, load index directly

* Minor fixes

* Remove TODO, no good solution

* Fix review remarks
2025-07-17 11:37:37 +02:00
Tim Visée 705607fe9c Add mutable map payload index on top of Gridstore (#6634)
* Serialize vector of ecow strings using cbor

* Adjust trait bounds for Gridstore support in map index

* Add Gridstore backend to mutable map index

* Add Gridstore builder

* Enable new map index in index selector

* Add tests

* Use different Gridstore block size depending on map data type

* Fix review remarks
2025-07-17 11:36:19 +02:00
3fc861976d Add mutable numeric payload index on top of Gridstore (#6609)
* Extend Gridstore blob trait, support basic primitives and vector of them

* Implement mutable numeric index on top of Gridstore

* Wrap Gridstore in rwlock, flush asynchronously

* Set custom Gridstore options tuned to numeric index

* Fix compilation errors

* Destruct RocksDB selector everywhere

* Add Gridstore payload index selector, build numeric, fallback others

* Add feature flag to Gridstore mutable payload index

* Don't store empty values in gridstore, it's not supported

* Reformat

* Initialize Gridstore during init of index builder

* Use owned and referenced paths correctly around Gridstore

* Change Gridstore page size in numeric index as suggested

* Make Gridstore block size dependent on size of numeric type

* Add tests

* Add separate fixed size blob trait for vec, prevent footgun

* Improve page size calculation

Co-authored-by: Luis Cossío <luis.cossio@qdrant.com>

* Simplify Blob requirement for numeric payload index

* Add missing test cases

* Replace ref mut with &mut

* Use correct hardware counter

* Implement clear cache for numeric payload index on Gridstore

* The block size is dynamic

* Error if trying to load index from storage that doesn't match backend

* fix counter

* Add comment on why we change page size

---------

Co-authored-by: Luis Cossío <luis.cossio@qdrant.com>
Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>
2025-07-17 11:36:11 +02:00
Tim Visée 08194f9b66 Improve Gridstore wipe/clear functionality (#6614)
* Gridstore config can be Copy

* Add test asserting wipe behavior

* Add clear function to Gridstore

* Make wipe take ownership, use new clear function everywhere

* Add comment to emphasize wipe behavior

* Propagate errors
2025-07-17 11:08:54 +02:00
Arnaud Gourlay 58d82243f5 Fix compilation of bench (#6562) 2025-05-22 23:24:21 +02:00
0d2c1ce254 Make gridstore Advise::Random and add function for sequential read (#6510)
* Make gridstore Advise::Random and add function for sequential read

* Reduce duplicate code in gridstore

* use sequential implementation in iterator

* actually use the sequential read

---------

Co-authored-by: Luis Cossío <luis.cossio@outlook.com>
Co-authored-by: Andrey Vasnetsov <andrey@vasnetsov.com>
2025-05-22 23:12:43 +02:00
Tim Visée cad4ceed4b Buffer all file IO when used as reader or writer (#6513) 2025-05-22 23:06:03 +02:00
Luis Cossío d968726c72 [minor opt] update region gaps in batch when flushing (#6446)
* update region gaps in batch when flushing

* rename to relative -> local

* add flushing bench
2025-05-22 22:55:02 +02:00
Luis Cossío e9c2cc5cfe Reuse space more in gridstore (#6445) 2025-05-22 22:52:29 +02:00
xzfc 1f805b618e Clear disk cache after read (#6396)
* Move clear_disk_cache to memory::fadvise

* Add memory::fadvise::OneshotFile

* Use OneshotFile
2025-04-21 00:08:52 +02:00
Tim Visée 4f6d3b928a Speed up pending changes lookups using ahash (#6385)
* Add bench for mmap_bitslice_buffered_update_wrapper

* Use ahash in buffered mmap/RocksDB types and in payload storage

* Function is used in testing only
2025-04-21 00:06:46 +02:00
Andrey Vasnetsov 6e0ddbafa9 disk cache hygiene (#6323)
* wip: implement explicit populate and clear_cache functions for all components

* fmt

* implement clear and populate for vector storages

* fmt

* implement clear and populate for payload storage

* wip: implement explicit populate and clear_cache functions payload indexes

* implement explicit populate and clear_cache functions payload indexes

* fix clippy on CI

* only compile posix_fadvise on linux

* only compile posix_fadvise on linux

* implement explicit populate and clear_cache functions for quantized vectors

* fmt

* remove post-load prefault

* fix typo

* implement is-on-disk for payload indexes, implement clear on drop for segment, implement clear after segment build

* fmt

* also evict quantized vectors after optimization

* re-use and replace advise_dontneed
2025-04-20 23:54:40 +02:00
Arnaud Gourlay 33e7aa0b98 Fixes for Clippy 1.86 (#6290) 2025-04-20 23:42:07 +02:00
Jojii a8c7a034ce Measure Payload IO reads on index creation (#6252) 2025-03-31 16:20:20 +02:00
Jojii 9676f9a2c6 Io measurement cleanup and tests (#5949)
* HW measurement cleanup and more tests

* Fix wrong measurements

* Use new assertion function

* Fix Payload Measurement bug. Fix tests
2025-03-21 11:43:31 +01:00
Tim Visée 8ad2b34265 Bump Rust edition to 2024 (#6042)
* Bump Rust edition to 2024

* gen is a reserved keyword now

* Remove ref mut on references

* Mark extern C as unsafe

* Wrap unsafe function bodies in unsafe block

* Geo hash implements Copy, don't reference but pass by value instead

* Replace secluded self import with parent

* Update execute_cluster_read_operation with new match semantics

* Fix lifetime issue

* Replace map_or with is_none_or

* set_var is unsafe now

* Reformat
2025-03-21 11:38:56 +01:00
Luis Cossío 315a35fe73 Rename blob_store as gridstore (#5918)
* rename blob_store into gridstore

Article is incoming and I feel like gridstore is a better fit to the
architecture

* fmt

* remove outdated TODO
2025-02-11 14:38:05 +01:00