рдореЗрд░рд╛ NVMe SSD рд╕реЗ рдзреАрдорд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдореЗрд░рд╛ NVMe SSD рд╕реЗ рдзреАрдорд╛ рдХреНрдпреЛрдВ рд╣реИ?
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо I/O рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреА рдХреБрдЫ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдЙрдирдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗред

рдХреБрдЫ рд╣рдлрд╝реНрддреЗ рдкрд╣рд▓реЗ рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдпрд╣ рд╕рд╡рд╛рд▓ рдЖрдпрд╛ рдХрд┐ рдПрдХ рд╕рд░реНрд╡рд░ рдкрд░ NVMe рджреВрд╕рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ SATA рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рдХреНрдпреЛрдВ рд╣реИред рдореИрдВрдиреЗ рд╕рд░реНрд╡рд░реЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рджреЗрдЦрд╛ рдФрд░ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЯреНрд░рд┐рдХреА рдкреНрд░рд╢реНрди рдерд╛: рдПрдирд╡реАрдПрдордИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрдВрдб рд╕реЗ рдерд╛, рдФрд░ рдПрд╕рдПрд╕рдбреА рд╕рд░реНрд╡рд░ рдЦрдВрдб рд╕реЗ рдерд╛ред

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рд╡реЗрд╢ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЦрдВрдбреЛрдВ рдХреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдИ рд╕рдВрдкреВрд░реНрдг рддрдХрдиреАрдХреА рдЙрддреНрддрд░ рдирд╣реАрдВ рд╣реИред рд╣рдо рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗ, рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдкреВрдЫреЗ рдЧрдП рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдВрдЧреЗред

fsync рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣рд╛рдБ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рддреЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рдХреЛ рдмрдлрд╝рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛рдиреА, рдЕрд╕реНрдерд┐рд░ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдмрдлрд╝рд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХрд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЕрд╡рд╕рд░ рди рдорд┐рд▓ рдЬрд╛рдПред рдЕрд╡рд╕рд░ рдорд╛рдирджрдВрдб рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдбреНрд░рд╛рдЗрд╡ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдмрд┐рдЬрд▓реА рдЧреБрд▓ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдмрдлрд╝рд░ рдХрд╛ рд╕рд╛рд░рд╛ рдбреЗрдЯрд╛ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдРрд╕реЗ рдХрдИ рдХрд╛рд░реНрдп рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдбреНрд░рд╛рдЗрд╡ рдкрд░ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рдФрд░ рдордзреНрдпрд╡рд░реНрддреА рдмрдлрд░ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рдЖрд╢реНрд╡рд╛рд╕рди POSIX-рд╕рдВрдЧрдд fsync рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Fsync рдХреЙрд▓ рдмрдлрд╝рд░ рд╕реЗ рдбреНрд░рд╛рдЗрд╡ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рддрд╛ рд╣реИред

рдЖрдЗрдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдХреГрддреНрд░рд┐рдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдмрдлрд╝рд░реНрд╕ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред

#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 рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд SSD рд╣реИрдВ:

  • Intel┬о DC SSD S4500 480 GB, SATA 3.2, 6 Gb/s рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯреЗрдб;
  • рд╕реИрдорд╕рдВрдЧ 970 рдИрд╡реАрдУ рдкреНрд▓рд╕ 500 рдЬреАрдмреА, рдкреАрд╕реАрдЖрдИрдИ 3.0 x4, ~31 рдЬреАрдмреАрдкреАрдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯреЗрдбред

рдкрд░реАрдХреНрд╖рдг Ubuntu 2255 рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ Intel┬о Xeon┬о W-20.04 рдкрд░ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдбрд┐рд╕реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП sysbench 1.0.18 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбрд┐рд╕реНрдХ рдореЗрдВ ext4 рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡рд░реВрдкрд┐рдд рдПрдХ рдПрдХрд▓ рд╡рд┐рднрд╛рдЬрди рд╣реИред рдкрд░реАрдХреНрд╖рдг рдХреА рддреИрдпрд╛рд░реА рдХреЗ рд▓рд┐рдП 100 рдЬреАрдмреА рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдирд╛ рд╣реИ:

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

рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рд╣реИрдВред

рдкрд░реАрдХреНрд╖рдг
рдЗрдВрдЯреЗрд▓┬о S4500
рд╕реИрдорд╕рдВрдЧ 970 рдИрд╡реАрдУ+

рдмрд┐рдирд╛ 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 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╢реВрдиреНрдп рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЪреВрдВрдХрд┐ рдбреЗрдЯрд╛ рдмрд╣реБрдд рд╕рдорд╛рди рдФрд░ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдУрдПрд╕ рдЕрдиреБрдХреВрд▓рди рдЪрд▓рди рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬреА рд▓рд╛рддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк sysbench рдХреЗ рд╕рднреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рд╕рд╡рд╛рд▓ рдЙрдард╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдлрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

# ╨С╨╡╨╖ 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

рдкрд░реАрдХреНрд╖рдг
рдЗрдВрдЯреЗрд▓┬о S4500
рд╕реИрдорд╕рдВрдЧ 970 рдИрд╡реАрдУ+

рдмрд┐рдирд╛ 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 рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреЛ рдзрд╛рд░рдгрд╛рдПрдБ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ:

  • рдбрд┐рд╕реНрдХ рдХреЛ рд╕рдорд╛рди рдпреЛрдЬрдирд╛ рдХреЗ рд▓реЛрдб рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;
  • рдбрд┐рд╕реНрдХ "рдзреЛрдЦрд╛" рджреЗрддреА рд╣реИ рдФрд░ рдЖрджреЗрд╢ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрддреА рд╣реИред

рдпрджрд┐ рдЖрдк рдмрд┐рдЬрд▓реА рдХреА рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдбреНрд░рд╛рдЗрд╡ рдХрд╛ рдмреЗрдИрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдбрд┐рд╕реНрдХрдЪреЗрдХрд░.pl, рд╡рд╣ рдерд╛ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ 2005 рд╡рд░реНрд╖ рдореЗрдВ.

рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рджреЛ рднреМрддрд┐рдХ рдорд╢реАрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - "рд╕рд░реНрд╡рд░" рдФрд░ "рдХреНрд▓рд╛рдЗрдВрдЯ"ред рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдбреНрд░рд╛рдЗрд╡ рдкрд░ рдереЛрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд┐рдЦрддрд╛ рд╣реИ, fsync рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬреЛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЛ рдЬрд╛рдирдХрд╛рд░реА рднреЗрдЬрддрд╛ рд╣реИред

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

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

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, "рдХреНрд▓рд╛рдЗрдВрдЯ" рдХреЛ рдбреА-рдПрдирд░реНрдЬреЗрдЯ рдХрд░рдирд╛ рдФрд░ рдХрдИ рдорд┐рдирдЯреЛрдВ рддрдХ рдмрд┐рдЬрд▓реА рд╡рд╛рдкрд╕ рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдкрд░реАрдХреНрд╖рдг рд╡рд┐рд╖рдп рдХреЛ рдмрд┐рдЬрд▓реА рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рди рдХрд┐ рдХреЗрд╡рд▓ рд╣рд╛рд░реНрдб рд╢рдЯрдбрд╛рдЙрди рдХрд░рдирд╛ред рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рд╕рд░реНрд╡рд░ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдУрдПрд╕ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред OS рдХреЛ рдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдбрд┐рд╕реНрдХрдЪреЗрдХрд░.pl, рд▓реЗрдХрд┐рди рдПрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд╕рддреНрдпрд╛рдкрд┐рдд.

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

рдЬрд╛рдБрдЪ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдпрджрд┐ рд╡реЗ 0 рд╣реИрдВ, рддреЛ рдбрд┐рд╕реНрдХ рдиреЗ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред рдбрд┐рд╕реНрдХ рдХреЗ рд▓рд┐рдП рд╕рдлрд▓ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рдпреЛрдЧ рдХреЛ рдХрдИ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ S4500 рдореЗрдВ рдмрд┐рдЬрд▓реА рд╣рд╛рдирд┐ рдХреА рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦреА, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реА fsync рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред

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

рдбрд┐рд╕реНрдХ рдпрд╛ рд╕рдВрдкреВрд░реНрдг рддреИрдпрд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪреБрдирддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ NVMe, рдпрд╛рдиреА PCIe рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд╛рд▓рд╛ SSD, "рдХреНрд▓рд╛рд╕рд┐рдХ" SATA SSD рд╕реЗ рддреЗрдЬрд╝ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдЖрдЬ рд╕рдордЭрд╛ рд╣реИ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдФрд░ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

IaaS рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдХрд┐рд░рд╛рдпреЗ рдкрд░ рд▓реЗрддреЗ рд╕рдордп рдЖрдк рд╕рд░реНрд╡рд░ рдШрдЯрдХреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ?
рд╣рдо рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрдкрдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореЗрд░рд╛ NVMe SSD рд╕реЗ рдзреАрдорд╛ рдХреНрдпреЛрдВ рд╣реИ?

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ