gpt4 book ai didi

c linux msync(MS_ASYNC) 刷新顺序

转载 作者:太空狗 更新时间:2023-10-29 12:18:09 24 4
gpt4 key购买 nike

是否保证在 linux 上使用 msync(MS_ASYNC) 刷新页面的顺序与写入页面的顺序相同?

如果视情况而定,我(完全服务器访问权限)是否有办法确保它们的顺序相同?

背景

我目前正在使用 OpenLDAP Symas MDB作为持久键/值存储并且没有 MDB_MAPASYNC - 这导致使用 msync(MS_ASYNC) (我查看了源代码) - 写入速度非常慢,甚至在处理数据时,单个内核会以 < 1MB/s 的速度永久等待 IO。经过分析,问题似乎是很多小的IO Ops。使用 MDB_MAPASYNC 我可以轻松达到磁盘的最大速率,但 MDB 的文档指出在这种情况下数据库可能会损坏。不幸的是,代码对我来说太复杂了/我目前没有时间逐步完成整个代码库以找出为什么会这样,而且我不需要 MDB 提供的许多功能(交易, cursors, ACID compliance), 所以我正在考虑编写我自己的由 mmap 支持的 KV 存储, 使用 msync(MS_ASYNC) 并确保以一种未刷新的页面只会丢失的方式编写最后接触的数据,并且不会损坏数据库或丢失任何其他数据。

但为此我需要我的问题的答案,不幸的是我完全无法通过谷歌搜索或浏览 linux 邮件列表找到这个答案(我发现了一些关于 msync 补丁的邮件,但没有别的)

请注意,我查看了数十个其他可用的持久性 KV 存储,但无法找到更适合我的(快速写入、易于使用、嵌入式(因此没有 http 服务等) ,确定性的速度(所以没有垃圾收集或像 leveldb 那样随机运行压缩),合理的空间要求(所以没有仅附加的数据库),可变 key 长度,二进制 key 和数据),但如果你知道一个可以帮助我的,我也会非常感激。

最佳答案

msync(MS_ASYNC) 不保证存储的顺序,因为在后台运行的 IO 电梯算法试图通过合并和排序写入来最大化设备的吞吐量来最大化效率.

关于c linux msync(MS_ASYNC) 刷新顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19302997/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com