рд▓рд┐рдирдХреНрд╕ рдкрд░ рднрдВрдбрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреИрд╕реЗ рдХрд░реЗрдВ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ

╨Т рдкрд┐рдЫрд▓реА рдмрд╛рд░ рд╣рдордиреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рдореЗрдореЛрд░реА рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдУрдкрди рд╕реЛрд░реНрд╕ рдЯреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреАред рдЖрдЬ рд╣рдо рд▓рд┐рдирдХреНрд╕ рдкрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдЗрдВрдЯрд░рдмреЗрдВрдЪ, рдлрд┐рдпреЛ, рдПрдЪрдбреАрдкрд╛рд░реНрдо, рдПрд╕ рдФрд░ рдмреЛрдиреАред

рд▓рд┐рдирдХреНрд╕ рдкрд░ рднрдВрдбрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреИрд╕реЗ рдХрд░реЗрдВ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ
- рдбреЗрдирд┐рдпрд▓ рд▓реЗрд╡рд┐рд╕ рдкреЗрд▓реБрд╕реА - рдЕрдирд╕реНрдкреНрд▓реИрд╢

рдзрд╛рдЧрд╛

рдлрд┐рдпреЛ (рд▓рдЪреАрд▓реЗ I/O рдкрд░реАрдХреНрд╖рдХ рдХреЗ рд▓рд┐рдП рдЦрдбрд╝рд╛ рд╣реИ) рд▓рд┐рдирдХреНрд╕ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдХ I/O рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рднреА рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ Cygwin. рд╕реЗрдЯрдЕрдк рдЧрд╛рдЗрдб рдЕрдВрджрд░ рд╣реИ GitHub рдкрд░ рдлрд┐рдпреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА.

рд▓реЗрдЦрдХ - рдЬреЗрдиреНрд╕ рдПрдХреНрд╕рдмреЛ (рдЬреЗрдиреНрд╕ рдПрдХреНрд╕рдмреЛ), рдЙрддреНрддрд░рджрд╛рдпреА Linux рдФрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдбреЗрд╡рд▓рдкрд░ рдореЗрдВ 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

рдЖрдЬ рдлрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдбрд╝реА рдХрдВрдкрдирд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╡реЗ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ SUSE, Nutanix ╨╕ рдЖрдИрдмреАрдПрдо.

hdparm

рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрдирд╛рдбрд╛рдИ рдбреЗрд╡рд▓рдкрд░ рдорд╛рд░реНрдХ рд▓реЙрд░реНрдб рджреНрд╡рд╛рд░рд╛ 2005 рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдереАред рдЕрднреА рднреА рд╡рд╣ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдФрд░ рдХрдИ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рддрд░рдгреЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред hdparm рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдбреНрд░рд╛рдЗрд╡ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЙрдкрдХрд░рдг рдПрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдкрдврд╝рдиреЗ рдХреА рдЧрддрд┐ рдЬреИрд╕реЗ рд╕рд░рд▓ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд┐рдЦреЗрдВ:

$ sudo hdparm -t /dev/sdb

рд╕рд┐рд╕реНрдЯрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛:

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

рдбреНрд░рд╛рдЗрд╡ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, hdparm рдЖрдкрдХреЛ рдХреИрд╢ рдореЗрдореЛрд░реА рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ, рд╕реНрд▓реАрдк рдореЛрдб рдФрд░ рдкрд╛рд╡рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ SSD рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдорд┐рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдЦрд╝рд┐рд░ рдХреИрд╕реЗ рдЪреЗрддрд╛рд╡рдиреА рдЖрд░реНрдХрд▓рд┐рдирдХреНрд╕ рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕рд┐рд╕реНрдЯрдо рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд▓рд╛рдкрд░рд╡рд╛рд╣реА рд╕реЗ рдХрд┐рдП рдЧрдП рдмрджрд▓рд╛рд╡ рдбрд┐рд╕реНрдХ рдкрд░ рдореМрдЬреВрдж рдбреЗрдЯрд╛ рдХреЛ рдЕрдкреНрд░рд╛рдкреНрдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдбреНрд░рд╛рдЗрд╡ рдХреЛ рдиреБрдХрд╕рд╛рди рднреА рдкрд╣реБрдВрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред hdparm рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдиреБрдЕрд▓ рдкрдврд╝рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ - рдмрд╕ рдХрдВрд╕реЛрд▓ рдореЗрдВ man hdparm рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВред

S

рдпрд╣ I/O рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд▓реЗрдЦрдХ рдереЗ рд╡рд┐рдХрд╛рд╕ рджрд▓ рдПрд▓реНрдЧреЛрдбреЗрд╡ рд╕рдореВрд╣ рд╕реЗ, рдЬрд┐рд╕рдореЗрдВ рдЗрдЯрд╛рд▓рд┐рдпрди рдХреЗ рдХрд░реНрдордЪрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдореЛрдбреЗрдирд╛ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдФрд░ рд░реЗрдЬрд┐рдпреЛ рдПрдорд┐рд▓рд┐рдпрд╛.

рд╕рднреА рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ, рдореВрд▓реНрдпрд╛рдВрдХрдирдХрд░реНрддрд╛рдУрдВ рднрдВрдбрд╛рд░рдг рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рджрд░реНрд╢рди - рдереНрд░реВрдкреБрдЯ, рд╡рд┐рд▓рдВрдмрддрд╛, рдЕрдиреБрд╕реВрдЪрдХ рдкреНрд░рджрд░реНрд╢рдиред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдереНрд░реВрдкреБрдЯ-рд╕рд┐рдВрдХ.рд╢ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкрдврд╝рдиреЗ рдпрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде "рдмрдордмрд╛рд░реА" рдХрд░рддрд╛ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╣рд▓реЗ рд╕реЗ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдлрд┐рдпреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдпрд╣рд╛рдБ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрдб.

рдПрдХ рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ - comm_startup_lat.sh - рдХреИрд╢ рдХреЗ "рдардВрдбрд╛" рд╣реЛрдиреЗ рдкрд░ (рдЬрдм рдЗрд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ) рдбрд┐рд╕реНрдХ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреА рд╡рд┐рд▓рдВрдмрддрд╛ рдХреЛ рдорд╛рдкрддрд╛ рд╣реИред рдХреЛрдб рднреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.

рд▓рд┐рдирдХреНрд╕ рдкрд░ рднрдВрдбрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреИрд╕реЗ рдХрд░реЗрдВ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ
- рдЕрдЧреЗ рдмреИрд░реЛрд╕ - рдЕрдирд╕реНрдкреНрд▓реИрд╢

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

рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛, 1989 рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЧрдИред рдЗрд╕рдХреЗ рд▓реЗрдЦрдХ рдЗрдВрдЬреАрдирд┐рдпрд░ рдЯрд┐рдо рдмреНрд░реЗ рдереЗред рдмреЛрдиреА рдХреА рдорджрдж рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЕрдиреБрдХреВрд▓рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрдВрдкреНрдпреВрдЯрд░ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдиреНрдпреВ рдСрдХреНрд╕рдлреЛрд░реНрдб рдЗрдВрдЧреНрд▓рд┐рд╢ рдбрд┐рдХреНрд╢рдирд░реА рд╡рд╛рдЯрд░рд▓реВ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдореЗрдВ.

рдмреЛрдиреА рдкреНрд░рджрд░реНрд╢рди рдбрд┐рд╕реНрдХ рдкрд░ рдбреЗрдЯрд╛ рдХрд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрдврд╝рдирд╛ рдФрд░ рд▓рд┐рдЦрдирд╛ред рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рддрд┐ рд╕рдВрд╕рд╛рдзрд┐рдд рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬреИрд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рджрд┐рдЦрд╛рддреА рд╣реИ рд╕реАрдкреАрдпреВ-рд╕реЗрдХреЗрдВрдб, рд╕рд╛рде рд╣реА рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рд╕реНрддрд░ред рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕реНрд░реЛрдд рдХреЛрдб рдЙрдкрд▓рдмреНрдз рд╣реИ Google рдХреЛрдб рдкрд░ рдЦреЛрдЬреЗрдВ.

рдмреЛрдиреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рдФрд░ рд╕реЗрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдмреЛрдиреА++ (C рдХреЗ рдмрдЬрд╛рдп C++ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ)ред рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЯреВрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, zcav рд╡рд┐рднрд┐рдиреНрди HDD рдЬрд╝реЛрди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдмреЛрдиреА++ ╨┐╨╛╨┤╤Е╨╛╨┤╨╕╤В рдореЗрд▓ рд╕рд░реНрд╡рд░ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдПред

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

рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдХреЛрди рдХреЛрд▓рд┐рд╡рд╛рд╕ (рдХреЛрди рдХреЛрд▓рд┐рд╡рд╛рд╕), рдСрд╕реНрдЯреНрд░реЗрд▓рд┐рдпрд╛рдИ рдПрдиреЗрд╕реНрдереЗрдЯрд┐рд╕реНрдЯ рдЬреЛ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ "рдкрд░ рдХрд╛рдо" рдореЗрдВ рдЕрдкрдиреЗ рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВредрдирд┐рд╖реНрдкрдХреНрд╖ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрдиреБрд╕реВрдЪрдХ" рдЗрдВрдЯрд░рдмреЗрдВрдЪ рдЖрдкрдХреЛ I/O рд╢реЗрдбреНрдпреВрд▓рд░ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

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

рдЯреВрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб, рдЙрджрд╛рд╣рд░рдг рдФрд░ рдЕрдиреБрд╢рдВрд╕рд╛рдПрдВ рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ GitHub рдкрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рднрдВрдбрд╛рд░.

рд╣рдо рдЕрдкрдиреЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рдХреНрдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

рд▓рд┐рдирдХреНрд╕ рдкрд░ рднрдВрдбрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреИрд╕реЗ рдХрд░реЗрдВ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ: 5 рдЦреБрд▓реЗ рдЙрдкрдХрд░рдг

рд▓рд┐рдирдХреНрд╕ рдкрд░ рднрдВрдбрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреИрд╕реЗ рдХрд░реЗрдВ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдмреИрдХрдЕрдк рд▓реЗрдирд╛: рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рд╕реЗ рд╕реНрд╡рдпрдВ рдХреЛ рдХреИрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦреЗрдВ
рд▓рд┐рдирдХреНрд╕ рдкрд░ рднрдВрдбрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреИрд╕реЗ рдХрд░реЗрдВ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЗрдВ рдХреИрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ?
рд▓рд┐рдирдХреНрд╕ рдкрд░ рднрдВрдбрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреИрд╕реЗ рдХрд░реЗрдВ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдПрдбрдорд┐рди рдХреЗ рд▓рд┐рдП рдЯреНрд░реЗрдирд┐рдВрдЧ рд╕реНрдЯреИрдВрдб: рдХреНрд▓рд╛рдЙрдб рдХреИрд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ

рд▓рд┐рдирдХреНрд╕ рдкрд░ рднрдВрдбрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреИрд╕реЗ рдХрд░реЗрдВ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рд╕реАрдорд╛ рдкрд░ рдЧреИрдЬреЗрдЯреНрд╕ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг: рдЧреЛрдкрдиреАрдп рдбреЗрдЯрд╛ рдЦреЛрдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░реЗрдВ?
рд▓рд┐рдирдХреНрд╕ рдкрд░ рднрдВрдбрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреИрд╕реЗ рдХрд░реЗрдВ: рдЦреБрд▓реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рд╕реНрдиреИрдкрд╢реЙрдЯ: "рд╕реНрдиреИрдкрд╢реЙрдЯ" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

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

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