рд▓рд┐рдирдХреНрд╕рд╡рд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛рдордЧрд┐рд░реАрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд╕реЗ рдХрд░рд╛рд╡реЗ: рдУрдкрди рдЯреВрд▓реНрд╕ рд╡рд╛рдкрд░реВрди рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ

╨Т рдЧреЗрд▓реНрдпрд╛ рд╡реЗрд│реА рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрдгрд┐ рдореЗрдорд░реА рдХрд╛рдордЧрд┐рд░реАрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА рдУрдкрди рд╕реЛрд░реНрд╕ рдЯреВрд▓реНрд╕рдмрджреНрджрд▓ рдмреЛрд▓рд▓реЛ. рдЖрдЬ рдЖрдкрдг рд▓рд┐рдирдХреНрд╕ рд╡рд░реАрд▓ рдлрд╛рдИрд▓ рд╕рд┐рд╕реНрдЯреАрдо рдЖрдгрд┐ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯреАрдорд╕рд╛рдареА рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдмрджреНрджрд▓ рдмреЛрд▓рдд рдЖрд╣реЛрдд - рдЗрдВрдЯрд░рдмреЗрдВрдЪ, рдлрд┐рдУ, рдПрдЪрдбреАрдкрд╛рд░реНрдо, рдПрд╕ рдЖрдгрд┐ рдмреЛрдиреА.

рд▓рд┐рдирдХреНрд╕рд╡рд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛рдордЧрд┐рд░реАрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд╕реЗ рдХрд░рд╛рд╡реЗ: рдУрдкрди рдЯреВрд▓реНрд╕ рд╡рд╛рдкрд░реВрди рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ
╨д╨╛╤В╨╛ - рдбреЕрдирд┐рдпрд▓ рд▓реЗрд╡реНрд╣рд┐рд╕ рдкреЗрд▓реБрд╕реА - рдЕрдирд╕реНрдкреНрд▓реЕрд╢

рдлрд┐рдУ

Fio (рдореНрд╣рдгрдЬреЗ рд▓рд╡рдЪрд┐рдХ I/O рдЯреЗрд╕реНрдЯрд░) Linux рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдордЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреЗ рдореВрд▓реНрдпрдорд╛рдкрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рд╕реНрдХ I/O рдкреНрд░рд╡рд╛рд╣ рддрдпрд╛рд░ рдХрд░рддреЗ. рдпреБрдЯрд┐рд▓рд┐рдЯреА рд╡рд┐рдВрдбреЛрдЬрд╡рд░ рджреЗрдЦреАрд▓ рдЪрд╛рд▓рд╡рд┐рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ - рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рд╕рд┐рдЧреНрд╡рд┐рди. рд╕реЗрдЯрдЕрдк рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рдЖрдд рдЖрд╣реЗ GitHub рд╡рд░ fio рднрд╛рдВрдбрд╛рд░.

рд▓реЗрдЦрдХ рдлрд┐рдУ - рдЬреЗрдиреНрд╕ рдПрдХреНрд╕рдмреЛ (рдЬреЗрдиреНрд╕ рдНрдХреНрд╕рдмреЛ), рдЬрдмрд╛рдмрджрд╛рд░ рд▓рд┐рдирдХреНрд╕ рдЖрдгрд┐ рдпреБрдЯрд┐рд▓рд┐рдЯреА рдбреЗрд╡реНрд╣рд▓рдкрд░рдордзреАрд▓ IO рдЙрдкрдкреНрд░рдгрд╛рд▓реАрд╕рд╛рдареА blktrace I/O рдСрдкрд░реЗрд╢рдиреНрд╕ рдЯреНрд░реЗрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА. рддреНрдпрд╛рдиреЗ рдлрд┐рдУ рддрдпрд╛рд░ рдХреЗрд▓рд╛, рдХрд╛рд░рдг рдореА рдердХрд▓реЛ рдЖрд╣реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд░ рд╕реНрд╡рд╣рд╕реНрддреЗ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рд╣рд╛.

рдпреБрдЯрд┐рд▓рд┐рдЯреА IOPS рдЖрдгрд┐ рд╕рд┐рд╕реНрдЯрдо рдереНрд░реВрдкреБрдЯрдЪреА рдЧрдгрдирд╛ рдХрд░реЗрд▓ рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ I/O рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреНрдпрд╛ рд░рд╛рдВрдЧреЗрдЪреНрдпрд╛ рдЦреЛрд▓реАрдЪрд╛ рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡реВ рд╢рдХреЗрд▓. рдпреБрдЯрд┐рд▓рд┐рдЯреА рд╡рд┐рд╢реЗрд╖ рдлрд╛рдЗрд▓реНрд╕ (.fio рд╡рд┐рд╕реНрддрд╛рд░) рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддреЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдЖрдгрд┐ рдЪрд╛рдЪрдгреА рдЕрдЯреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд. рдЕрдиреЗрдХ рдЪрд╛рдЪрдгреА рдкрд░реНрдпрд╛рдп рдЖрд╣реЗрдд, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд▓реЗрдЦрди, рд╡рд╛рдЪрди рдЖрдгрд┐ рдЕрдзрд┐рд▓реЗрдЦрди рдЖрд╣реЗ. рдпреЗрдереЗ рдЙрджрд╛рд╣рд░рдг рдкрд╣рд┐рд▓реНрдпрд╛ рдХреЗрд╕рд╕рд╛рдареА рдлрд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА:

[global]
	name=fio-rand-read
	filename=fio-rand-read
	rw=randread
	bs=4K
	direct=0
	numjobs=1
	time_based=1
	runtime=900

рдЖрдЬ fio рдореЛрдареНрдпрд╛ рдХрдВрдкрдиреНрдпрд╛ рд╡рд╛рдкрд░рддрд╛рдд - рддреЗ рдпреБрдЯрд┐рд▓рд┐рдЯреАрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд SUSE, рдиреНрдпреБрдЯреЕрдирд┐рдХреНрд╕ ╨╕ IBM.

Hdparm

рдпреБрдЯрд┐рд▓рд┐рдЯреА рдХреЕрдиреЗрдбрд┐рдпрди рд╡рд┐рдХрд╕рдХ рдорд╛рд░реНрдХ рд▓реЙрд░реНрдб рдпрд╛рдВрдиреА 2005 рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реА рд╣реЛрддреА. рддреА рдЕрдЬреВрдирд╣реА рд▓реЗрдЦрдХрд╛рджреНрд╡рд╛рд░реЗ рд╕рдорд░реНрдерд┐рдд рдЖрдгрд┐ рдЕрдиреЗрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рддрд░рдгрд╛рдВрдЪрд╛ рднрд╛рдЧ рдЖрд╣реЗ. hdparm рдЪрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢ рдбреНрд░рд╛рдЗрд╡реНрд╣ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рдЖрд╣реЗ. рдкрдг рд╕рд╛рдзрди рдХрд░реВ рд╢рдХрддрд╛ рд╕рд╛рдзреНрдпрд╛ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд╕рд╛рдареА рд╡рд╛рдкрд░рд╛, рдЬрд╕реЗ рдХреА рд╡рд╛рдЪрди рдЧрддреА. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдХрдиреНрд╕реЛрд▓рдордзреНрдпреЗ рдХрдорд╛рдВрдб рд▓рд┐рд╣рд╛:

$ sudo hdparm -t /dev/sdb

рд╕рд┐рд╕реНрдЯрдо рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рдкреНрд░рддрд┐рд╕рд╛рдж рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрд▓:

Timing buffered disk reads: 242 MB in 3.01 seconds = 80.30 MB/sec

рдбреНрд░рд╛рдЗрд╡реНрд╣ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, hdparm рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЕрд╢реЗ рдореЗрдорд░реАрдЪрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдгреНрдпрд╛рдЪреА, рд╕реНрд▓реАрдк рдореЛрдб рдЖрдгрд┐ рдкреЙрд╡рд░ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рд╕реБрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЖрдгрд┐ SSD рд╡рд░реАрд▓ рдбреЗрдЯрд╛ рд╕реБрд░рдХреНрд╖рд┐рддрдкрдгреЗ рдорд┐рдЯрд╡рд┐рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. рдкрдг рдХрд╕реЗ рдЪреЗрддрд╛рд╡рдгреА ArchLinux рдордзреАрд▓ рддрдЬреНрдЮ, рд╕рд┐рд╕реНрдЯрдо рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдордзреАрд▓ рдирд┐рд╖реНрдХрд╛рд│рдЬреА рдмрджрд▓ рдбрд┐рд╕реНрдХрд╡рд░реАрд▓ рдбреЗрдЯрд╛ рдЕрдЧрдореНрдп рдмрдирд╡реВ рд╢рдХрддрд╛рдд рдЖрдгрд┐ рдбреНрд░рд╛рдЗрд╡реНрд╣рдЪреЗ рдиреБрдХрд╕рд╛рди рджреЗрдЦреАрд▓ рдХрд░реВ рд╢рдХрддрд╛рдд. hdparm рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдореЕрдиреНрдпреБрдЕрд▓ рд╡рд╛рдЪрдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ - рдХрдиреНрд╕реЛрд▓рдордзреНрдпреЗ рдлрдХреНрдд man hdparm рдХрдорд╛рдВрдб рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рд╛.

S

I/O рдкреНрд░рдгрд╛рд▓реАрдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреЗ рдореВрд▓реНрдпрдорд╛рдкрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣рд╛ рдмреЗрдВрдЪрдорд╛рд░реНрдХрдЪрд╛ рд╕рдВрдЪ рдЖрд╣реЗ. рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЪреЗ рд▓реЗрдЦрдХ рд╣реЛрддреЗ рд╡рд┐рдХрд╛рд╕ рд╕рдВрдШ рдЕрд▓реНрдЧреЛрджреЗрд╡ рдЧрдЯрд╛рддреАрд▓, рдЬреНрдпрд╛рдд рдЗрдЯрд╛рд▓рд┐рдпрди рдХрд░реНрдордЪрд╛рд░реА рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд рдореЛрдбреЗрдирд╛ рдЖрдгрд┐ рд░реЗрдЬрд┐рдУ рдПрдорд┐рд▓рд┐рдпрд╛ рд╡рд┐рджреНрдпрд╛рдкреАрда.

рд╕рд░реНрд╡ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдмреЕрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрд╣реЗрдд, рдореВрд▓реНрдпрд╛рдВрдХрдирдХрд░реНрддреЗ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯрдо рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди - рдереНрд░реВрдкреБрдЯ, рд╡рд┐рд▓рдВрдмрддрд╛, рд╢реЗрдбреНрдпреВрд▓рд░ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, throughput-sync.sh рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╡рд╛рдЪрди рдХрд┐рдВрд╡рд╛ рд▓реЗрдЦрди рд╡рд┐рдирдВрддреНрдпрд╛рдВрд╕рд╣ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯрдорд▓рд╛ тАЬрдмреЙрдореНрдмрд░реНрдбтАЭ рдХрд░рддреЛ (рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЖрдзреАрдЪ рдирдореВрдж рдХреЗрд▓реЗрд▓реА fio рдЙрдкрдпреБрдХреНрддрддрд╛ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ). рдпреЗрдереЗ рдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕рд╛рдареА рдХреЛрдб.

рджреБрд╕рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ - comm_startup_lat.sh - рдЬреЗрд╡реНрд╣рд╛ рдХреЕрд╢реЗ "рдХреЛрд▓реНрдб" рдЕрд╕рддреЗ (рдЬреЗрд╡реНрд╣рд╛ рддреНрдпрд╛рдд рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдирд╕рддреЛ) рддреЗрд╡реНрд╣рд╛ рдбрд┐рд╕реНрдХрд╡рд░реВрди рдбреЗрдЯрд╛ рд╡рд╛рдЪрдгреНрдпрд╛рдЪреА рд╡рд┐рд▓рдВрдмрддрд╛ рдореЛрдЬрддреЗ. рдХреЛрдб рджреЗрдЦреАрд▓ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдЖрдврд│реВ рд╢рдХрддреЗ.

рд▓рд┐рдирдХреНрд╕рд╡рд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛рдордЧрд┐рд░реАрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд╕реЗ рдХрд░рд╛рд╡реЗ: рдУрдкрди рдЯреВрд▓реНрд╕ рд╡рд╛рдкрд░реВрди рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ
╨д╨╛╤В╨╛ - рдПрдЬреЗ рдмреЕрд░реЛрд╕ - рдЕрдирд╕реНрдкреНрд▓реЕрд╢

рдмреЛрдиреА

1989 рдордзреНрдпреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЙрдкрдпреБрдХреНрддрддрд╛. рддреНрдпрд╛рдЪреЗ рд▓реЗрдЦрдХ рдЕрднрд┐рдпрдВрддрд╛ рдЯрд┐рдо рдмреНрд░реЗ рд╣реЛрддреЗ. рдмреЛрдиреАрдЪреНрдпрд╛ рдорджрддреАрдиреЗ рддреНрдпрд╛рдВрдиреА рдпреЛрдЬрдирд╛ рдЖрдЦрд▓реА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдд рд╕рд╛рдореАрд▓ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рдВрдЧрдгрдХ рдкреНрд░рдгрд╛рд▓реАрдЪреЗ рдХрд╛рд░реНрдп рдирд╡реАрди рдСрдХреНрд╕рдлрд░реНрдб рдЗрдВрдЧреНрд░рдЬреА рд╢рдмреНрджрдХреЛрд╢ рд╡реЙрдЯрд░рд▓реВ рд╡рд┐рджреНрдпрд╛рдкреАрдард╛рдд.

рдмреЛрдиреА рдкреВрд░реНрдг рдХрд░рддреЗ рдбрд┐рд╕реНрдХрд╡рд░ рдбреЗрдЯрд╛рдЪреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд╛рдЪрди рдЖрдгрд┐ рд▓реЗрдЦрди. рдирдВрддрд░ рдпреБрдЯрд┐рд▓рд┐рдЯреА рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рджрд░реНрд╢рд╡рддреЗ рдЬрд╕реЗ рдХреА рдкреНрд░рддрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдмрд╛рдЗрдЯреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ CPU-рд╕реЗрдХрдВрдж, рддрд╕реЗрдЪ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рдкрд╛рддрд│реА рдЯрдХреНрдХреЗрд╡рд╛рд░реА рдореНрд╣рдгреВрди. рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕реНрддреНрд░реЛрдд рдХреЛрдб рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ Google Code рд╡рд░ рд╢реЛрдзрд╛.

рдмреЛрдиреАрд╡рд░ рдЖрдзрд╛рд░рд┐рдд, рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡реНрд╣рдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рд╕рд╛рдзрдирд╛рдВрдЪрд╛ рджреБрд╕рд░рд╛ рд╕рдВрдЪ рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЖрд╣реЗ - рдмреЛрдиреА++ (C рдРрд╡рдЬреА C++ рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ). рд╣реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕рд╛рдзрдиреЗ рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ HDD рдЭреЛрдирдЪреНрдпрд╛ рдХрд╛рдордЧрд┐рд░реАрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА zcav. рддрд╕реЗрдЪ рдмреЛрдиреА++ ╨┐╨╛╨┤╤Е╨╛╨┤╨╕╤В рдореЗрд▓ рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рдЪрд╛рдЪрдгреАрд╕рд╛рдареА.

рдЗрдВрдЯрд░рдмреЗрдВрдЪ

рдЙрдкрдпреБрдХреНрддрддрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реА рдХреЛрди рдХреЛрд▓рд┐рд╡рд╛рд╕ (рдХреЙрди рдХреЛрд▓рд┐рд╡реНрд╣рд╛рд╕), рдСрд╕реНрдЯреНрд░реЗрд▓рд┐рдпрди рдНрдиреЗрд╕реНрдереЗрдЯрд┐рд╕реНрдЯ, рдЬреЗ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдирд▓рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╛рдареА рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдпреЛрдЧрджрд╛рдирд╛рд╕рд╛рдареА рдУрд│рдЦрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ "рдирд┐рд╖реНрдкрдХреНрд╖ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╢реЗрдбреНрдпреВрд▓рд░" рдЗрдВрдЯрд░рдмреЗрдВрдЪ рддреБрдореНрд╣рд╛рд▓рд╛ I/O рд╢реЗрдбреНрдпреБрд▓рд░ рдЖрдгрд┐ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рдд рдорджрдд рдХрд░рддреЗ.

рдЗрдВрдЯрд░рдмреЗрдВрдЪ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡реНрд╣ рдХрд╛рд░реНрдпреЗ рдЪрд╛рд▓рд╡рддрд╛рдирд╛ CPU рд╢реЗрдбреНрдпреБрд▓рд░рдЪреНрдпрд╛ рд╡рд░реНрддрдирд╛рдЪреЗ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ. рд╣реА рдкрд░рд╕реНрдкрд░ рдХреНрд░рд┐рдпрд╛ рдСрдбрд┐рдУ рдЖрдгрд┐ рд╡реНрд╣рд┐рдбрд┐рдУрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреЗ, рд╕рдВрдЧрдгрдХ рдЧреЗрдо рдЪрд╛рд▓рд╡рдгреЗ рдХрд┐рдВрд╡рд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдбреНрд░реЕрдЧ рдХрд░рдгреЗ рдЕрд╕реВ рд╢рдХрддреЗ.

рд╕рд╛рдзрди рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрддреНрд░реЛрдд рдХреЛрдб, рдЙрджрд╛рд╣рд░рдгреЗ рдЖрдгрд┐ рд╢рд┐рдлрд╛рд░рд╕реА рдпрд╛рдордзреНрдпреЗ рдЖрдврд│реВ рд╢рдХрддрд╛рдд GitHub рд╡рд░ рдЕрдзрд┐рдХреГрдд рднрд╛рдВрдбрд╛рд░.

рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧрдордзреНрдпреЗ рдХрд╛рдп рд▓рд┐рд╣рд┐рддреЛ:

рд▓рд┐рдирдХреНрд╕рд╡рд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛рдордЧрд┐рд░реАрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд╕реЗ рдХрд░рд╛рд╡реЗ: рдУрдкрди рдЯреВрд▓реНрд╕ рд╡рд╛рдкрд░реВрди рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡реНрд╣рд░рд╕рд╛рдареА рдмреЗрдВрдЪрдорд╛рд░реНрдХ: 5 рдУрдкрди рдЯреВрд▓реНрд╕

рд▓рд┐рдирдХреНрд╕рд╡рд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛рдордЧрд┐рд░реАрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд╕реЗ рдХрд░рд╛рд╡реЗ: рдУрдкрди рдЯреВрд▓реНрд╕ рд╡рд╛рдкрд░реВрди рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдлрд╛рдпрд▓реАрдВрдЪрд╛ рдмреЕрдХрдЕрдк рдШреЗрдгреЗ: рдбреЗрдЯрд╛ рдЧрдорд╛рд╡рдгреНрдпрд╛рдкрд╛рд╕реВрди рд╕реНрд╡рддрдГрдЪреЗ рд╕рдВрд░рдХреНрд╖рдг рдХрд╕реЗ рдХрд░рд╛рд╡реЗ
рд▓рд┐рдирдХреНрд╕рд╡рд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛рдордЧрд┐рд░реАрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд╕реЗ рдХрд░рд╛рд╡реЗ: рдУрдкрди рдЯреВрд▓реНрд╕ рд╡рд╛рдкрд░реВрди рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирд╡рд░ рд╕рд┐рд╕реНрдЯрдо рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡реНрд╣ рдХрд╢реА рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рд╛рд╡реА?
рд▓рд┐рдирдХреНрд╕рд╡рд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛рдордЧрд┐рд░реАрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд╕реЗ рдХрд░рд╛рд╡реЗ: рдУрдкрди рдЯреВрд▓реНрд╕ рд╡рд╛рдкрд░реВрди рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдкреНрд░рд╢рд╛рд╕рдХрд╛рдВрд╕рд╛рдареА рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реНрдЯрдБрдб: рдХреНрд▓рд╛рдЙрдб рдХрд╢реА рдорджрдд рдХрд░реВ рд╢рдХрддреЗ

рд▓рд┐рдирдХреНрд╕рд╡рд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛рдордЧрд┐рд░реАрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд╕реЗ рдХрд░рд╛рд╡реЗ: рдУрдкрди рдЯреВрд▓реНрд╕ рд╡рд╛рдкрд░реВрди рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рд╕реАрдореЗрд╡рд░ рдЧреЕрдЭреЗрдЯреНрд╕рдЪреА рддрдкрд╛рд╕рдгреА: рдЧреЛрдкрдиреАрдп рдбреЗрдЯрд╛ рдЧрдорд╛рд╡реВ рдирдпреЗ рдореНрд╣рдгреВрди рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рд╛рд╡реЗ?
рд▓рд┐рдирдХреНрд╕рд╡рд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛рдордЧрд┐рд░реАрдЪреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд╕реЗ рдХрд░рд╛рд╡реЗ: рдУрдкрди рдЯреВрд▓реНрд╕ рд╡рд╛рдкрд░реВрди рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рд╕реНрдиреЕрдкрд╢реЙрдЯреНрд╕: рдЖрдореНрд╣рд╛рд▓рд╛ "рд╕реНрдиреЕрдкрд╢реЙрдЯреНрд╕" рдЪреА рдЧрд░рдЬ рдХрд╛ рдЖрд╣реЗ

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

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