เชถเชพ เชฎเชพเชŸเซ‡ เชฎเชพเชฐเซเช‚ NVMe SSD เช•เชฐเชคเชพเช‚ เชงเซ€เชฎเซเช‚ เช›เซ‡?

เชถเชพ เชฎเชพเชŸเซ‡ เชฎเชพเชฐเซเช‚ NVMe SSD เช•เชฐเชคเชพเช‚ เชงเซ€เชฎเซเช‚ เช›เซ‡?
เช† เชฒเซ‡เช–เชฎเชพเช‚ เช†เชชเชฃเซ‡ I/O เชธเชฌเชธเชฟเชธเซเชŸเชฎเชจเซ€ เช•เซ‡เชŸเชฒเซ€เช• เช˜เซ‹เช‚เช˜เชพเชŸ เช…เชจเซ‡ เช•เชพเชฎเช—เซ€เชฐเซ€ เชชเชฐ เชคเซ‡เชฎเชจเซ€ เช…เชธเชฐ เชœเซ‹เชˆเชถเซเช‚.

เชฅเซ‹เชกเชพ เช…เช เชตเชพเชกเชฟเชฏเชพ เชชเชนเซ‡เชฒเชพ เชฎเชจเซ‡ เชชเซเชฐเชถเซเชจเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชตเซ‹ เชชเชกเซเชฏเซ‹ เชนเชคเซ‹ เช•เซ‡ เชถเชพ เชฎเชพเชŸเซ‡ เชเช• เชธเชฐเซเชตเชฐ เชชเชฐ NVMe เชฌเซ€เชœเชพ เชชเชฐ SATA เช•เชฐเชคเชพ เชงเซ€เชฎเซเช‚ เชนเชคเซเช‚. เชฎเซ‡เช‚ เชธเชฐเซเชตเชฐ เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃเซ‹ เชœเซ‹เชฏเชพ เช…เชจเซ‡ เชธเชฎเชœเชพเชฏเซเช‚ เช•เซ‡ เช† เชเช• เชฎเซเชถเซเช•เซ‡เชฒ เชชเซเชฐเชถเซเชจ เช›เซ‡: NVMe เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชธเซ‡เช—เชฎเซ‡เชจเซเชŸเชฎเชพเช‚เชฅเซ€ เชนเชคเซ‹, เช…เชจเซ‡ SSD เชธเชฐเซเชตเชฐ เชธเซ‡เช—เชฎเซ‡เชจเซเชŸเชฎเชพเช‚เชฅเซ€ เชนเชคเซ‹.

เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡, เชœเซเชฆเชพ เชœเซเชฆเชพ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เชตเชฟเชตเชฟเชง เชธเซ‡เช—เชฎเซ‡เชจเซเชŸเชจเชพ เช‰เชคเซเชชเชพเชฆเชจเซ‹เชจเซ€ เชคเซเชฒเชจเชพ เช•เชฐเชตเซ€ เชตเชพเชœเชฌเซ€ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช† เชธเช‚เชชเซ‚เชฐเซเชฃ เชคเช•เชจเซ€เช•เซ€ เชœเชตเชพเชฌ เชจเชฅเซ€. เชšเชพเชฒเซ‹ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹เชจเซ‹ เช…เชญเซเชฏเชพเชธ เช•เชฐเซ€เช, เชชเซเชฐเชฏเซ‹เช—เซ‹ เช•เชฐเซ€เช เช…เชจเซ‡ เชชเซ‚เช›เชพเชฏเซ‡เชฒเชพ เชชเซเชฐเชถเซเชจเชจเซ‹ เชœเชตเชพเชฌ เช†เชชเซ€เช.

fsync เชถเซเช‚ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซเชฏเชพเช‚ เชฅเชพเชฏ เช›เซ‡?

เชกเซเชฐเชพเช‡เชต เชธเชพเชฅเซ‡เชจเชพ เช•เชพเชฎเชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชกเซ‡เชŸเชพ เชฌเชซเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡ เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชฌเชซเชฐเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€เชจเซ‡ เชกเซเชฐเชพเช‡เชตเชฎเชพเช‚ เชธเชพเชšเชตเชตเชพเชจเซ€ เช…เชจเซเช•เซ‚เชณ เชคเช• เชจ เชฎเชณเซ‡ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เช…เชธเซเชฅเชฟเชฐ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เชฅเชพเชฏ เช›เซ‡. "เชคเช•" เชฎเชพเชŸเซ‡เชจเชพ เชฎเชพเชชเชฆเช‚เชก เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เช…เชจเซ‡ เชกเซเชฐเชพเช‡เชตเชจเซ€ เชฒเชพเช•เซเชทเชฃเชฟเช•เชคเชพเช“ เชฆเซเชตเชพเชฐเชพ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชชเชพเชตเชฐ เชจเชฟเชทเซเชซเชณเชคเชพเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชฌเชซเชฐเชฎเชพเช‚เชจเซ‹ เชคเชฎเชพเชฎ เชกเซ‡เชŸเชพ เช–เซ‹เชตเชพเชˆ เชœเชถเซ‡.

เชคเซเชฏเชพเช‚ เชธเช‚เช–เซเชฏเชพเชฌเช‚เชง เช•เชพเชฐเซเชฏเซ‹ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เชคเชฎเชพเชฐเซ‡ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เชซเชพเช‡เชฒเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชกเซเชฐเชพเช‡เชต เชชเชฐ เชฒเช–เชพเชฏเซ‡เชฒเชพ เช›เซ‡ เช…เชจเซ‡ เชฎเชงเซเชฏเชตเชฐเซเชคเซ€ เชฌเชซเชฐเชฎเชพเช‚ เชจเชนเซ€เช‚. เช† เช–เชพเชคเชฐเซ€ POSIX- เชธเซเชธเช‚เช—เชค fsync เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฎเซ‡เชณเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡. fsync เช•เซ‰เชฒ เช•เชฐเชตเชพเชฅเซ€ เชฌเชซเชฐเชฅเซ€ เชกเซเชฐเชพเช‡เชต เชชเชฐ เชฒเช–เชตเชพเชจเซ€ เชซเชฐเชœ เชชเชกเซ‡ เช›เซ‡.

เชšเชพเชฒเซ‹ C เชฎเชพเช‚ เชŸเซ‚เช‚เช•เชพ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเชพ เชฐเซ‚เชชเชฎเชพเช‚ เช•เซƒเชคเซเชฐเชฟเชฎ เช‰เชฆเชพเชนเชฐเชฃ เชธเชพเชฅเซ‡ เชฌเชซเชฐเชจเซ€ เช…เชธเชฐ เชฆเชฐเซเชถเชพเชตเซ€เช.

#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>

int main(void) {
    /* ะžั‚ะบั€ั‹ะฒะฐะตะผ ั„ะฐะนะป answer.txt ะฝะฐ ะทะฐะฟะธััŒ, ะตัะปะธ ะตะณะพ ะฝะตั‚ -- ัะพะทะดะฐั‘ะผ */
    int fd = open("answer.txt", O_WRONLY | O_CREAT);
    /* ะ—ะฐะฟะธัั‹ะฒะฐะตะผ ะฟะตั€ะฒั‹ะน ะฝะฐะฑะพั€ ะดะฐะฝะฝั‹ั… */
    write(fd, "Answer to the Ultimate Question of Life, The Universe, and Everything: ", 71);
    /* ะ”ะตะปะฐะตะผ ะฒะธะด, ั‡ั‚ะพ ะฟั€ะพะฒะพะดะธะผ ะฒั‹ั‡ะธัะปะตะฝะธั ะฒ ั‚ะตั‡ะตะฝะธะต 10 ัะตะบัƒะฝะด */
    sleep(10);
    /* ะ—ะฐะฟะธัั‹ะฒะฐะตะผ ั€ะตะทัƒะปัŒั‚ะฐั‚ ะฒั‹ั‡ะธัะปะตะฝะธะน */
    write(fd, "42n", 3); 

    return 0;
}

เชŸเชฟเชชเซเชชเชฃเซ€เช“ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฎเชพเช‚ เช•เซเชฐเชฟเชฏเชพเช“เชจเซ‹ เช•เซเชฐเชฎ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชธเชฎเชœเชพเชตเซ‡ เช›เซ‡. เชŸเซ‡เช•เซเชธเซเชŸ "เชœเซ€เชตเชจเชจเชพ เชฎเซเช–เซเชฏ เชชเซเชฐเชถเซเชจเชจเซ‹ เชœเชตเชพเชฌ, เชฌเซเชฐเชนเซเชฎเชพเช‚เชก เช…เชจเซ‡ เชคเซ‡ เชฌเชงเซเช‚" เช‘เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชฆเซเชตเชพเชฐเชพ เชฌเชซเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เช…เชจเซ‡ เชœเซ‹ เชคเชฎเซ‡ "เช—เชฃเชคเชฐเซ€" เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฐเซ€เชธเซ‡เชŸ เชฌเชŸเชจ เชฆเชฌเชพเชตเซ€เชจเซ‡ เชธเชฐเซเชตเชฐเชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชถเซ‹, เชคเซ‹ เชซเชพเช‡เชฒ เช–เชพเชฒเซ€ เชฅเชˆ เชœเชถเซ‡. เช…เชฎเชพเชฐเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚, เชŸเซ‡เช•เซเชธเซเชŸ เชฒเซ‹เชธ เช เช•เซ‹เชˆ เชธเชฎเชธเซเชฏเชพ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ fsync เชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€. เชกเซ‡เชŸเชพเชฌเซ‡เช เช† เช†เชถเชพเชตเชพเชฆเชจเซ‡ เชถเซ‡เชฐ เช•เชฐเชคเชพ เชจเชฅเซ€.

เชกเซ‡เชŸเชพเชฌเซ‡เช เช เชœเชŸเชฟเชฒ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ เช›เซ‡ เชœเซ‡ เชเช•เชธเชพเชฅเซ‡ เช˜เชฃเซ€ เชซเชพเช‡เชฒเซ‹ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เชคเซ‡เช“ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡เช“ เชœเซ‡ เชกเซ‡เชŸเชพ เชฒเช–เซ‡ เช›เซ‡ เชคเซ‡ เชกเซเชฐเชพเช‡เชต เชชเชฐ เชธเชพเชšเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ€ เช…เช‚เชฆเชฐเชจเชพ เชกเซ‡เชŸเชพเชจเซ€ เชธเซเชธเช‚เช—เชคเชคเชพ เช†เชจเชพ เชชเชฐ เชจเชฟเชฐเซเชญเชฐ เช›เซ‡. เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‡ เชคเชฎเชพเชฎ เชชเซ‚เชฐเซเชฃ เชฅเชฏเซ‡เชฒเชพ เชตเซเชฏเชตเชนเชพเชฐเซ‹เชจเซ‡ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเชตเชพ เช…เชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชธเชฎเชฏเซ‡ เชชเชพเชตเชฐ เช—เซเชฎเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชกเชฟเชเชพเช‡เชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡. เช† เชตเชฐเซเชคเชฃเซ‚เช•เชจเซ‡ เชธเชคเชค เชฎเซ‹เชŸเซ€ เชฎเชพเชคเซเชฐเชพเชฎเชพเช‚ fsync เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

fsync เชจเชพ เชตเชพเชฐเช‚เชตเชพเชฐ เช‰เชชเชฏเซ‹เช—เชจเซ€ เช…เชธเชฐ เชถเซเช‚ เช›เซ‡?

เชธเชพเชฎเชพเชจเซเชฏ I/O เชฆเชฐเชฎเชฟเชฏเชพเชจ, เช‘เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชกเชฟเชธเซเช• เชธเชพเชฅเซ‡ เชธเช‚เชšเชพเชฐเชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชฌเชพเชนเซเชฏ เชกเซเชฐเชพเช‡เชตเซเชธ เชฎเซ‡เชฎเชฐเซ€ เชตเช‚เชถเชตเซ‡เชฒเซ‹เชฎเชพเช‚ เชธเซŒเชฅเซ€ เชงเซ€เชฎเซ€ เชนเซ‹เชฏ เช›เซ‡. เชคเซ‡เชฅเซ€, เช‘เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชกเซเชฐเชพเช‡เชตเชจเซ€ เชเช• เชเช•เซเชธเซ‡เชธเชฎเชพเช‚ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเซ‹ เชตเชงเซ เชกเซ‡เชŸเชพ เชฒเช–เชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‡ เช›เซ‡.

เชšเชพเชฒเซ‹ เชšเซ‹เช•เซเช•เชธ เช‰เชฆเชพเชนเชฐเชฃ เชธเชพเชฅเซ‡ fsync เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เช…เชธเชฐ เชฆเชฐเซเชถเชพเชตเซ€เช. เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชŸเซ‡เชธเซเชŸ เชกเซเชฐเชพเชˆเชต เชคเชฐเซ€เช•เซ‡ เชจเซ€เชšเซ‡เชจเชพ SSDs เช›เซ‡:

  • Intelยฎ DC SSD S4500 480 GB, SATA 3.2, 6 Gbit/s เชฎเชพเชฐเชซเชคเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒ;
  • Samsung 970 EVO Plus 500GB, PCIe 3.0 x4, ~31 Gbit/s เชฆเซเชตเชพเชฐเชพ เช•เชจเซ‡เช•เซเชŸเซ‡เชก.

Ubuntu 2255 เชชเชฐ เชšเชพเชฒเชคเชพ Intelยฎ Xeonยฎ W-20.04 เชชเชฐ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชนเชพเชฅ เชงเชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. Sysbench 1.0.18 เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชกเชฟเชธเซเช•เชจเซ‡ เชšเช•เชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡. เชกเชฟเชธเซเช• เชชเชฐ เชเช• เชชเชพเชฐเซเชŸเซ€เชถเชจ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เชœเซ‡ ext4 เชคเชฐเซ€เช•เซ‡ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เชฅเชฏเซ‡เชฒ เช›เซ‡. เชชเชฐเซ€เช•เซเชทเชฃเชจเซ€ เชคเซˆเชฏเชพเชฐเซ€เชฎเชพเช‚ 100 GB เชซเชพเช‡เชฒเซ‹ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡:

sysbench --test=fileio --file-total-size=100G prepare

เชšเชพเชฒเซ€ เชฐเชนเซ‡เชฒ เชชเชฐเซ€เช•เซเชทเชฃเซ‹:

# ะ‘ะตะท fsync
sysbench --num-threads=16 --test=fileio --file-test-mode=rndrw --file-fsync-freq=0 run

# ะก fsync ะฟะพัะปะต ะบะฐะถะดะพะน ะทะฐะฟะธัะธ
sysbench --num-threads=16 --test=fileio --file-test-mode=rndrw --file-fsync-freq=1 run

เชชเชฐเซ€เช•เซเชทเชฃ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชฐเชœเซ‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชŸเซ‡เชธเซเชŸ
Intelยฎ S4500
เชธเซ‡เชฎเชธเช‚เช— 970 EVO+

fsync, MiB/s เชตเช—เชฐ เชตเชพเช‚เชšเชจ
5734.89
9028.86

Fsync, MiB/s เชตเช—เชฐ เชฐเซ‡เช•เซ‹เชฐเซเชกเชฟเช‚เช—
3823.26
6019.24

fsync, MiB/s เชธเชพเชฅเซ‡ เชตเชพเช‚เชšเชจ
37.76
3.27

fsync, MiB/s เชธเชพเชฅเซ‡ เชฐเซ‡เช•เซ‹เชฐเซเชกเชฟเช‚เช—
25.17
2.18

เชคเซ‡ เชœเซ‹เชตเชพเชจเซเช‚ เชธเชฐเชณ เช›เซ‡ เช•เซ‡ เช•เซเชฒเชพเชฏเช‚เชŸ เชธเซ‡เช—เชฎเซ‡เชจเซเชŸเชฎเชพเช‚เชฅเซ€ NVMe เชตเชฟเชถเซเชตเชพเชธเชชเซ‚เชฐเซเชตเช• เชฒเซ€เชกเชฎเชพเช‚ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชชเซ‹เชคเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เชกเชฟเชธเซเช• เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚, เช…เชจเซ‡ เชœเซเชฏเชพเชฐเซ‡ fsync เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡ เช—เซเชฎเชพเชตเซ‡ เช›เซ‡. เช† เชฌเซ‡ เชชเซเชฐเชถเซเชจเซ‹ เช‰เชญเชพ เช•เชฐเซ‡ เช›เซ‡:

  1. fsync เชตเชฟเชจเชพ เชชเชฐเซ€เช•เซเชทเชฃเชฎเชพเช‚ เชตเชพเช‚เชšเชตเชพเชจเซ€ เชเชกเชช เชšเซ‡เชจเชฒเชจเซ€ เชญเซŒเชคเชฟเช• เชฌเซ‡เชจเซเชกเชตเชฟเชกเซเชฅ เช•เชฐเชคเชพเช‚ เช•เซ‡เชฎ เชตเชงเซ€ เชœเชพเชฏ เช›เซ‡?
  2. เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ fsync เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ‡ เชนเซ‡เชจเซเชกเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฐเซเชตเชฐ เชธเซ‡เช—เชฎเซ‡เชจเซเชŸ SSD เชถเชพ เชฎเชพเชŸเซ‡ เชตเชงเซ เชธเชพเชฐเซเช‚ เช›เซ‡?

เชชเซเชฐเชฅเชฎ เชชเซเชฐเชถเซเชจเชจเซ‹ เชœเชตเชพเชฌ เชธเชฐเชณ เช›เซ‡: sysbench เชถเซ‚เชจเซเชฏเชฅเซ€ เชญเชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡. เช†เชฎ, เชชเชฐเซ€เช•เซเชทเชฃ 100 เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธ เชถเซ‚เชจเซเชฏเชฅเซ€ เชตเชงเซ เชนเชพเชฅ เชงเชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚. เชกเซ‡เชŸเชพ เช–เซ‚เชฌ เชœ เชธเชฎเชพเชจ เช…เชจเซ‡ เช…เชจเซเชฎเชพเชจเชฟเชค เชนเซ‹เชตเชพเชฅเซ€, เชตเชฟเชตเชฟเชง OS เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เช…เชฎเชฒเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเซ‡ เช›เซ‡.

เชœเซ‹ เชคเชฎเซ‡ เชฌเชงเชพ sysbench เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชชเชฐ เชชเซเชฐเชถเซเชจ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชคเชฎเซ‡ fio เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

# ะ‘ะตะท fsync
fio --name=test1 --blocksize=16k --rw=randrw --iodepth=16 --runtime=60 --rwmixread=60 --fsync=0 --filename=/dev/sdb

# ะก fsync ะฟะพัะปะต ะบะฐะถะดะพะน ะทะฐะฟะธัะธ
fio --name=test1 --blocksize=16k --rw=randrw --iodepth=16 --runtime=60 --rwmixread=60 --fsync=1 --filename=/dev/sdb

เชŸเซ‡เชธเซเชŸ
Intelยฎ S4500
เชธเซ‡เชฎเชธเช‚เช— 970 EVO+

fsync, MiB/s เชตเช—เชฐ เชตเชพเช‚เชšเชจ
45.5
178

Fsync, MiB/s เชตเช—เชฐ เชฐเซ‡เช•เซ‹เชฐเซเชกเชฟเช‚เช—
30.4
119

fsync, MiB/s เชธเชพเชฅเซ‡ เชตเชพเช‚เชšเชจ
32.6
20.9

fsync, MiB/s เชธเชพเชฅเซ‡ เชฐเซ‡เช•เซ‹เชฐเซเชกเชฟเช‚เช—
21.7
13.9

Fsync เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ NVMe เชชเซเชฐเชฆเชฐเซเชถเชจเชฎเชพเช‚ เช˜เชŸเชพเชกเซ‹ เชฅเชตเชพเชจเซเช‚ เชตเชฒเชฃ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชฆเซƒเชถเซเชฏเชฎเชพเชจ เช›เซ‡. เชคเชฎเซ‡ เชฌเซ€เชœเชพ เชชเซเชฐเชถเซเชจเชจเซ‹ เชœเชตเชพเชฌ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เช†เช—เชณ เชตเชงเซ€ เชถเช•เซ‹ เช›เซ‹.

เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เช…เชฅเชตเชพ เชฌเซเชฒเชซ

เช…เช—เชพเช‰, เช…เชฎเซ‡ เช•เชนเซเชฏเซเช‚ เชนเชคเซเช‚ เช•เซ‡ เชกเซ‡เชŸเชพ เชฌเชซเชฐเชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เช›เซ‡, เชชเชฐเช‚เชคเซ เช…เชฎเซ‡ เชคเซ‡ เชธเซเชชเชทเซเชŸ เช•เชฐเซเชฏเซเช‚ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เช† เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชจเชฅเซ€. เช…เชคเซเชฏเชพเชฐเซ‡ เชชเชฃ เช…เชฎเซ‡ เช‘เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเซเชธเชจเซ€ เชœเชŸเชฟเชฒเชคเชพเช“เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเชถเซเช‚ เชจเชนเซ€เช‚ เช…เชจเซ‡ เชฌเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชชเซเชฐเช•เชพเชฐเชจเชพ เชฌเชซเชฐเชจเซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซ€เชถเซเช‚:

  • เช•เชพเชฐเซเชฏเช•เซเชฐเชฎ;
  • เชนเชพเชฐเซเชกเชตเซ‡เชฐ

เชธเซ‰เชซเซเชŸเชตเซ‡เชฐ เชฌเชซเชฐ เช‘เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชฐเชนเซ‡เชฒเชพ เชฌเชซเชฐเชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เช†เชชเซ‡ เช›เซ‡, เช…เชจเซ‡ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชฌเชซเชฐ เชกเชฟเชธเซเช• เช•เช‚เชŸเซเชฐเซ‹เชฒเชฐเชจเซ€ เช…เชธเซเชฅเชฟเชฐ เชฎเซ‡เชฎเชฐเซ€เชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เช†เชชเซ‡ เช›เซ‡. fsync เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒ เชคเซ‡เชจเชพ เชฌเชซเชฐเชฎเชพเช‚เชฅเซ€ เชฎเซเช–เซเชฏ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชชเชฐ เชกเซ‡เชŸเชพ เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡ เชกเซเชฐเชพเช‡เชตเชจเซ‡ เช†เชฆเซ‡เชถ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช†เชฆเซ‡เชถ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡ เชคเซ‡ เชšเช•เชพเชธเชตเชพเชจเซ€ เช•เซ‹เชˆ เชฐเซ€เชค เชจเชฅเซ€.

SSD เชถเซเชฐเซ‡เชทเซเช  เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เชฌเซ‡ เชงเชพเชฐเชฃเชพเช“ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡:

  • เชกเชฟเชธเซเช• เชธเชฎเชพเชจ เชฒเซ‹เชก เชฎเชพเชŸเซ‡ เชฐเชšเชพเชฏเซ‡เชฒ เช›เซ‡;
  • เชกเชฟเชธเซเช• "เชฌเซเชฒเชซเซเชธ" เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช†เชฆเซ‡เชถเชจเซ‡ เช…เชตเช—เชฃเซ‡ เช›เซ‡.

เชœเซ‹ เชคเชฎเซ‡ เชชเชพเชตเชฐ เชฒเซ‹เชธ เชŸเซ‡เชธเซเชŸ เช•เชฐเชพเชตเซ‹ เช›เซ‹ เชคเซ‹ เชกเซเชฐเชพเชˆเชตเชจเซเช‚ เช…เชชเซเชฐเชฎเชพเชฃเชฟเช• เชตเชฐเซเชคเชจ เชœเซ‹เชˆ เชถเช•เชพเชฏ เช›เซ‡. เชคเชฎเซ‡ เช†เชจเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชตเชกเซ‡ เชšเช•เชพเชธเซ€ เชถเช•เซ‹ เช›เซ‹ diskchecker.pl, เชœเซ‡ เชนเชคเซเช‚ เชฌเชจเชพเชตเซเชฏเซเช‚ 2005 เชตเชฐเซเชทเชฎเชพเช‚

เช† เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฎเชพเชŸเซ‡ เชฌเซ‡ เชญเซŒเชคเชฟเช• เชฎเชถเซ€เชจเซ‹เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ - เชเช• "เชธเชฐเซเชตเชฐ" เช…เชจเซ‡ "เช•เซเชฒเชพเชฏเชจเซเชŸ". เช•เซเชฒเชพเชฏเช‚เชŸ เชชเชฐเซ€เช•เซเชทเชฃ เชนเซ‡เช เชณ เชกเชฟเชธเซเช• เชชเชฐ เชฅเซ‹เชกเซ€ เชฎเชพเชคเซเชฐเชพเชฎเชพเช‚ เชกเซ‡เชŸเชพ เชฒเช–เซ‡ เช›เซ‡, fsync เชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชถเซเช‚ เชฒเช–เซเชฏเซเช‚ เชนเชคเซเช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เชธเชฐเซเชตเชฐเชจเซ‡ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡.

# ะ—ะฐะฟัƒัะบะฐะตั‚ัั ะฝะฐ ัะตั€ะฒะตั€ะต
./diskchecker.pl -l [port]

# ะ—ะฐะฟัƒัะบะฐะตั‚ัั ะฝะฐ ะบะปะธะตะฝั‚ะต
./diskchecker.pl -s <server[:port]> create <file> <size_in_MB>

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชšเชฒเชพเชตเซเชฏเชพ เชชเช›เซ€, เชคเชฎเชพเชฐเซ‡ "เช•เซเชฒเชพเชฏเชจเซเชŸ" เชจเซ‡ เชชเชพเชตเชฐ เชฌเช‚เชง เช•เชฐเชตเซ‹ เช†เชตเชถเซเชฏเช• เช›เซ‡ เช…เชจเซ‡ เชฅเซ‹เชกเซ€ เชฎเชฟเชจเชฟเชŸเซ‹ เชธเซเชงเซ€ เชชเชพเชตเชฐ เชชเชฐเชค เช•เชฐเชถเซ‹ เชจเชนเซ€เช‚. เชœเซ‡ เชตเซเชฏเช•เซเชคเชฟเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡เชจเซ‡ เชตเซ€เชœเชณเซ€เชฅเซ€ เชกเชฟเชธเซเช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡, เช…เชจเซ‡ เชฎเชพเชคเซเชฐ เชธเช–เชค เชถเชŸเชกเชพเช‰เชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœ เชจเชนเซ€เช‚. เชฅเซ‹เชกเชพ เชธเชฎเชฏ เชชเช›เซ€, เชธเชฐเซเชตเชฐ เช•เชจเซ‡เช•เซเชŸ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ OS เชฎเชพเช‚ เชฒเซ‹เชก เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. OS เชฒเซ‹เชก เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ diskchecker.pl, เชชเชฐเช‚เชคเซ เชฆเชฒเซ€เชฒ เชธเชพเชฅเซ‡ เชšเช•เชพเชธเซ‹.

./diskchecker.pl -s <server[:port]> verify <file>

เชšเซ‡เช•เชจเชพ เช…เช‚เชคเซ‡ เชคเชฎเซ‡ เชญเซ‚เชฒเซ‹เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชœเซ‹เชถเซ‹. เชœเซ‹ เชคเซเชฏเชพเช‚ 0 เชนเซ‹เชฏ, เชคเซ‹ เชกเชฟเชธเซเช• เชชเชฐเซ€เช•เซเชทเชฃ เชชเชพเชธ เช•เชฐเซ‡ เช›เซ‡. เชกเชฟเชธเซเช• เชฎเชพเชŸเซ‡ เชจเชธเซ€เชฌเชฆเชพเชฐ เชธเช‚เชฏเซ‹เช—เชจเซ‡ เชฌเชพเช•เชพเชค เชฐเชพเช–เชตเชพ เชฎเชพเชŸเซ‡, เชชเซเชฐเชฏเซ‹เช—เชจเซ‡ เช˜เชฃเซ€ เชตเช–เชค เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชœเซเชฏเชพเชฐเซ‡ เชชเชพเชตเชฐ เช–เซ‹เชตเชพเชˆ เช—เชฏเซ‹ เชนเชคเซ‹ เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเชพเชฐเชพ S4500 เช เช•เซ‹เชˆ เชญเซ‚เชฒ เชฆเชฐเซเชถเชพเชตเซ€ เชจเชฅเซ€, เชเชŸเชฒเซ‡ เช•เซ‡ เชคเซ‡ เช˜เชฃเชพ เชฌเชงเชพ fsync เช•เซ‰เชฒเซเชธ เชธเชพเชฅเซ‡ เชตเชฐเซเช•เชฒเซ‹เชก เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช›เซ‡.

เชจเชฟเชทเซเช•เชฐเซเชท

เชกเชฟเชธเซเช• เช…เชฅเชตเชพ เชธเช‚เชชเซ‚เชฐเซเชฃ เชคเซˆเชฏเชพเชฐ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเซ‹ เชชเชธเช‚เชฆ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชคเชฎเชพเชฐเซ‡ เชธเชฎเชธเซเชฏเชพเช“เชจเซ€ เชตเชฟเชถเชฟเชทเซเชŸเชคเชพเช“ เชฏเชพเชฆ เชฐเชพเช–เชตเซ€ เชœเซ‹เชˆเช เชœเซ‡เชจเซ‡ เชนเชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชชเซเชฐเชฅเชฎ เชจเชœเชฐเชฎเชพเช‚, เชคเซ‡ เชธเซเชชเชทเซเชŸ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ NVMe, เชเชŸเชฒเซ‡ เช•เซ‡, PCIe เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชธเชพเชฅเซ‡เชจเซ‹ SSD, "เช•เซเชฒเชพเชธเชฟเช•" SATA SSD เช•เชฐเชคเชพเช‚ เชเชกเชชเซ€ เช›เซ‡. เชœเซ‹ เช•เซ‡, เช†เชชเชฃเซ‡ เช†เชœเซ‡ เชถเซ€เช–เซเชฏเชพ เชคเซ‡เชฎ, เชšเซ‹เช•เซเช•เชธ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“เชฎเชพเช‚ เช…เชจเซ‡ เช…เชฎเซเช• เช•เชพเชฐเซเชฏเซ‹ เชธเชพเชฅเซ‡ เช†เชตเซเช‚ เชจ เชชเชฃ เชนเซ‹เชˆ เชถเช•เซ‡.

IaaS เชชเซเชฐเชฆเชพเชคเชพ เชชเชพเชธเซ‡เชฅเซ€ เชญเชพเชกเซ‡ เช†เชชเชคเซ€ เชตเช–เชคเซ‡ เชคเชฎเซ‡ เชธเชฐเซเชตเชฐ เช˜เชŸเช•เซ‹เชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชถเซ‹?
เช…เชฎเซ‡ เชŸเชฟเชชเซเชชเชฃเซ€เช“เชฎเชพเช‚ เชคเชฎเชพเชฐเซ€ เชฐเชพเชน เชœเซ‹เชˆ เชฐเชนเซเชฏเชพ เช›เซ€เช.

เชถเชพ เชฎเชพเชŸเซ‡ เชฎเชพเชฐเซเช‚ NVMe SSD เช•เชฐเชคเชพเช‚ เชงเซ€เชฎเซเช‚ เช›เซ‡?

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹