Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
bigtang
V2EX  ›  Linux

修改 Linux 交换页大小,以便实现 SSD 上更快的随机查询问题?

  •  
  •   bigtang · Jun 14, 2023 · 2354 views
    This topic created in 1083 days ago, the information mentioned may be changed or developed.
    在 linux 中,用 mmap 映射一个文件返回一个内存指针,从该指针中读取一个字节,Linux 会从磁盘上读取该字节所在的整页数据(一般是 4096 字节),这导致在磁盘上随机查询,比在内存中慢数千倍,因为 SSD 本来就比内存慢 100 倍,而读取几个字节可能就要读 4096 字节整页数据,又慢了几百倍。linux 的交换页大小 4096 字节是不能更改的,除非在编译 linux 系统前修改。如果不能更改交换页大小,如何能够在用 mmap 读取几个字节时,不要从磁盘读整页数据?我的最终目的是想在 SSD 磁盘中随机查找数据,速度可以是内存的 1/100 ,但不能更慢了。
    Supplement 1  ·  Jun 14, 2023
    我目前的系统实测:如果在内存中查询,仅需几十毫秒,如果数据全在磁盘上( SSD ),就需要几秒甚至几十秒,如果只慢 100 倍,都是可以接受的,慢 2000 倍就接受不了了。
    10 replies    2023-06-19 22:44:08 +08:00
    billlee
        1
    billlee  
       Jun 14, 2023 via Android   ❤️ 1
    但是磁盘读取也是一次至少读 4K 的啊
    oldsix2
        2
    oldsix2  
       Jun 14, 2023
    SSD 磁盘最小 IO 是 Block 限制的吧,这个 mount 之前应该可以修改的。
    改的太小,对于一次获取大量数据的情况,IO 次数会成倍增加。
    GrayXu
        3
    GrayXu  
       Jun 14, 2023
    如#1 ,SSD 不能不读整页数据,就像 DRAM 也得按 64B 来操作。
    codehz
        4
    codehz  
       Jun 14, 2023
    还有 page size 的问题,这个部分也不是说改代码就能解决的(
    lemonleo
        5
    lemonleo  
       Jun 14, 2023
    从 SSD 向内存读取整页数据和读取几个字节数据相比,应该不会慢几百倍那么多。
    twl007
        6
    twl007  
       Jun 14, 2023
    整页读取就是为了解决按字节读取太慢的问题 如果真的按照按字节去读取 速度那是真的慢

    另外 SSD 本身底层的逻辑也是随机读写 跟 HDD 不一样
    x1596357
        7
    x1596357  
       Jun 14, 2023
    从读取几个字节跟读取 4k 速度几乎可以说没有多大差别。因为 ssd 的设计,一读就是一个 flash 的行。你可以尝试使用 vmtouch 之类的工具,先把文件预读到内存里。不要局限于一种思路。
    ho121
        8
    ho121  
       Jun 14, 2023
    1. 程序中只读取几个字节,操作系统不会真仅仅读取这几个字节的数据。第一次读取可能需要把页换到内存里,下一次读取同页的数据时,大概率是直接在内存中读取的。
    2. 硬盘读取数据也是按“块”来读取的,而不是一个字节一个字节的读取。哪怕操作系统真的读取 1 字节的数据,硬盘也会把整个块读取出来,然后返回这一个字节的数据。如果是读取连续几个字节的数据,且在同一个块内,硬盘只需要一次读操作。
    litguy
        9
    litguy  
       Jun 14, 2023   ❤️ 1
    字节读取 SSD 不支持,这是块存储
    你需要的是傲腾 memory
    MrKrabs
        10
    MrKrabs  
       Jun 19, 2023
    是不是你的 ssd 太拉了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2794 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 5414617a · 58ms · UTC 15:37 · PVG 23:37 · LAX 08:37 · JFK 11:37
    ♥ Do have faith in what you're doing.