рдорд╛рдЭреЗ 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
Samsung 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
Samsung 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 рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рддреНрдпрд╛рдЪреНрдпрд╛ рдмрдлрд░рдордзреВрди рдореБрдЦреНрдп рд╕реНрдЯреЛрд░реЗрдЬрд╡рд░ рдбреЗрдЯрд╛ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдбреНрд░рд╛рдЗрд╡реНрд╣рд▓рд╛ рдХрдорд╛рдВрдб рдкрд╛рдард╡рддреЗ, рдкрд░рдВрддреБ рдХрдорд╛рдВрдб рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реА рдЖрд╣реЗ рдпрд╛рдЪреА рдкрдбрддрд╛рд│рдгреА рдХрд░рдгреНрдпрд╛рдЪрд╛ рдХреЛрдгрддрд╛рд╣реА рдорд╛рд░реНрдЧ рдирд╛рд╣реА.

рдПрд╕рдПрд╕рдбреА рд╕рд░реНрд╡реЛрддреНрддрдо рдкрд░рд┐рдгрд╛рдо рджрд░реНрд╢рд╡рд┐рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рджреЛрди рдЧреГрд╣рд┐рддрдХ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд:

  • рдбрд┐рд╕реНрдХ рд╕рдорд╛рди рд▓реЛрдбрд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реА рдЖрд╣реЗ;
  • рдбрд┐рд╕реНрдХ "рдмреНрд▓рдл" рдХрд░рддреЗ рдЖрдгрд┐ рдХрдорд╛рдВрдбрдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░рддреЗ.

рдЖрдкрдг рдкреЙрд╡рд░ рд▓реЙрд╕ рдЯреЗрд╕реНрдЯ рдШреЗрддрд▓реНрдпрд╛рд╕ рдбреНрд░рд╛рдЗрд╡реНрд╣рдЪреЗ рдЕрдкреНрд░рд╛рдорд╛рдгрд┐рдХ рд╡рд░реНрддрди рд▓рдХреНрд╖рд╛рдд рдпреЗрдК рд╢рдХрддреЗ. рддреБрдореНрд╣реА рд╣реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕рд╣ рддрдкрд╛рд╕реВ рд╢рдХрддрд╛ diskchecker.pl, рддреЗ рд╣реЛрддреЗ рд╕реНрдерд╛рдкрди 2005 рд╡рд░реНрд╖рд╛рдордзреНрдпреЗ

рдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕рд╛рдареА рджреЛрди рднреМрддрд┐рдХ рдорд╢реАрди рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд - рдПрдХ "рд╕рд░реНрд╡реНрд╣рд░" рдЖрдгрд┐ рдПрдХ "рдХреНрд▓рд╛рдпрдВрдЯ". рдХреНрд▓рд╛рдпрдВрдЯ рдЪрд╛рдЪрдгреА рдЕрдВрддрд░реНрдЧрдд рдбрд┐рд╕реНрдХрд╡рд░ рдереЛрдбреНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдбреЗрдЯрд╛ рд▓рд┐рд╣рд┐рддреЛ, fsync рд▓рд╛ рдХреЙрд▓ рдХрд░рддреЛ рдЖрдгрд┐ рдХрд╛рдп рд▓рд┐рд╣рд┐рд▓реЗ рдЖрд╣реЗ рдпрд╛рдмрджреНрджрд▓ рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рдорд╛рд╣рд┐рддреА рдкрд╛рдард╡рддреЛ.

# ╨Ч╨░╨┐╤Г╤Б╨║╨░╨╡╤В╤Б╤П ╨╜╨░ ╤Б╨╡╤А╨▓╨╡╤А╨╡
./diskchecker.pl -l [port]

# ╨Ч╨░╨┐╤Г╤Б╨║╨░╨╡╤В╤Б╤П ╨╜╨░ ╨║╨╗╨╕╨╡╨╜╤В╨╡
./diskchecker.pl -s <server[:port]> create <file> <size_in_MB>

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рдирдВрддрд░, рдЖрдкрдг "рдХреНрд▓рд╛рдпрдВрдЯ" рд▓рд╛ рдкреЙрд╡рд░ рдмрдВрдж рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЖрдгрд┐ рдХрд╛рд╣реА рдорд┐рдирд┐рдЯрд╛рдВрд╕рд╛рдареА рдкреЙрд╡рд░ рдкрд░рдд рдХрд░реВ рдирдХрд╛. рд╡рд┐рдЬреЗрдкрд╛рд╕реВрди рдЪрд╛рдЪрдгреА рдШреЗрддрд▓реЗрд▓реНрдпрд╛ рд╡реНрдпрдХреНрддреАрд▓рд╛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдгреЗ рдорд╣рддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ, рдЖрдгрд┐ рдлрдХреНрдд рд╣рд╛рд░реНрдб рд╢рдЯрдбрд╛рдЙрди рдХрд░реВ рдирдХрд╛. рдХрд╛рд╣реА рдХрд╛рд│рд╛рдирдВрддрд░, рд╕рд░реНрд╡реНрд╣рд░ рдХрдиреЗрдХреНрдЯ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ рдЖрдгрд┐ рдУрдПрд╕рдордзреНрдпреЗ рд▓реЛрдб рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рдУрдПрд╕ рд▓реЛрдб рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рддреЗ рдкреБрдиреНрд╣рд╛ рд╕реБрд░реВ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ diskchecker.pl, рдкрдг рд╡рд╛рджрд╛рд╕рд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рд╛.

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

рддрдкрд╛рд╕рдгреАрдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрд░реБрдЯреАрдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рджрд┐рд╕реЗрд▓. 0 рдЕрд╕рд▓реНрдпрд╛рд╕, рдбрд┐рд╕реНрдХрдиреЗ рдЪрд╛рдЪрдгреА рдЙрддреНрддреАрд░реНрдг рдХреЗрд▓реА рдЖрд╣реЗ. рдбрд┐рд╕реНрдХрд╕рд╛рдареА рднрд╛рдЧреНрдпрд╡рд╛рди рдпреЛрдЧрд╛рдпреЛрдЧ рд╡рдЧрд│рдгреНрдпрд╛рд╕рд╛рдареА, рдкреНрд░рдпреЛрдЧ рдЕрдиреЗрдХ рд╡реЗрд│рд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рд╣реЛрдК рд╢рдХрддреЛ.

рдЬреЗрд╡реНрд╣рд╛ рд╡реАрдЬ рдЧреЗрд▓реА рддреЗрд╡реНрд╣рд╛ рдЖрдордЪреНрдпрд╛ S4500 рдиреЗ рдХреЛрдгрддреАрд╣реА рддреНрд░реБрдЯреА рджрд╛рдЦрд╡рд▓реА рдирд╛рд╣реА, рдпрд╛рдЪрд╛ рдЕрд░реНрде рддреЗ рднрд░рдкреВрд░ fsync рдХреЙрд▓рд╕рд╣ рд╡рд░реНрдХрд▓реЛрдбрд╕рд╛рдареА рддрдпрд╛рд░ рдЖрд╣реЗ.

рдирд┐рд╖реНрдХрд░реНрд╖

рдбрд┐рд╕реНрдХреНрд╕ рдХрд┐рдВрд╡рд╛ рд╕рдВрдкреВрд░реНрдг рд░реЗрдбреАрдореЗрдб рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдирд┐рд╡рдбрддрд╛рдирд╛, рдЖрдкрдг рдЬреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рддреНрдпрд╛рдВрдЪреЗ рддрдкрд╢реАрд▓ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛рд╡реЗ. рдкрд╣рд┐рд▓реНрдпрд╛ рджреГрд╖реНрдЯреАрдХреНрд╖реЗрдкрд╛рдд, рд╣реЗ рд╕реНрдкрд╖реНрдЯ рджрд┐рд╕рддреЗ рдХреА NVMe, рдореНрд╣рдгрдЬреЗ, PCIe рдЗрдВрдЯрд░рдлреЗрд╕рд╕рд╣ рдПрдХ SSD, "рдХреНрд▓рд╛рд╕рд┐рдХ" SATA SSD рдкреЗрдХреНрд╖рд╛ рд╡реЗрдЧрд╡рд╛рди рдЖрд╣реЗ. рддрдерд╛рдкрд┐, рдЖрдЬ рдЖрдкрдг рд╢рд┐рдХрд▓реЛ рдЖрд╣реЛрдд, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд рдЖрдгрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдВрд╕рд╣ рдЕрд╕реЗ рд╣реЛрдК рд╢рдХрдд рдирд╛рд╣реА.

IaaS рдкреНрд░рджрд╛рддреНрдпрд╛рдХрдбреВрди рднрд╛рдбреНрдпрд╛рдиреЗ рдШреЗрддрд╛рдирд╛ рддреБрдореНрд╣реА рд╕рд░реНрд╡реНрд╣рд░ рдШрдЯрдХрд╛рдВрдЪреА рдЪрд╛рдЪрдгреА рдХрд╢реА рдХрд░рддрд╛?
рдЖрдореНрд╣реА рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдордзреНрдпреЗ рддреБрдордЪреА рд╡рд╛рдЯ рдкрд╛рд╣рдд рдЖрд╣реЛрдд.

рдорд╛рдЭреЗ NVMe SSD рдкреЗрдХреНрд╖рд╛ рдХрдореА рдХрд╛ рдЖрд╣реЗ?

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛