рд▓рдбрд╝ рдХреИрд╢ рд▓рд╛рд▓ рдХреЗ рд╕рд╛рде рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИ

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд░реНрдгрди


рдПрдХ рдФрд╕рдд рдЕрддреНрдпрдзрд┐рдХ рднрд░реА рд╣реБрдИ рд╕рд╛рдЗрдЯ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВред рдЖрдорддреМрд░ рдкрд░ рдРрд╕реА рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдмреИрдХрдПрдВрдб рдФрд░ рдбреАрдмреА рдХреЗ рдмреАрдЪ рдПрдХ рдХреИрд╢ рд▓реЗрдпрд░ рд▓рдЧрд╛рдИ рдЬрд╛рддреА рд╣реИред рдЖрдЧрдВрддреБрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рд╛рде "рд╕рдбрд╝рд╛ рд╣реБрдЖ" рдХреИрд╢ рдмрдврд╝рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдмреИрдХрдПрдВрдб рдФрд░ рдбреАрдмреА рдкрд░ рд▓реЛрдб рдмрдврд╝рддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдордп рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдгрд╛рд▓реА рд╣реИ: рдЫреЛрдЯреЗ рд▓рд╛рд▓ рдХреВрдмрдбрд╝ рдХрдИ рдХреИрд╢ рдЕрдкрдбреЗрдЯ рдкрд░ "рдзреБрдВрдзрд▓реЗ" рдЕрдиреБрд░реЛрдз рд╣реИрдВред рдпрд╣ рдЖрд▓реЗрдЦ PHP ( APC рдмрдВрдбрд▓) рдХреЗ рдЙрджрд╛рд╣рд░рдг ( patch attached ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЖрдзрд╛рд░ рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдФрд░ рдХреИрд╢рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред

рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк


рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рдзрд┐ рд╕рд┐рд░реНрдл рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИред рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг, IMHO, рд╡реНрдпрд╕реНрдд рддрд╛рд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдХреИрд╢ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдЬрдмрдХрд┐ рдмрд╛рдХреА рдкреБрд░рд╛рдиреЗ рдбреЗрдЯрд╛ рджреЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕рдорд╛рдзрд╛рди рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ (рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдПрдХ рд╕рдорд╛рди рд╡рд┐рддрд░рдг рдХреЗ рд╕рд╛рде) рд╡рд░реНрдгрд┐рдд рд╕рдорд╛рдзрд╛рди рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреИрд╢ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╣реА RED рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕реЗ рдЖрд╡реЗрджрди рдХреЛрдб рдХреЗ рдЕрдВрджрд░ рд╡рд░реНрдЧ / рдЖрд╡рд░рдг рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдЗрд╕рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ PHP рдХреЛрдб рдореЗрдВ рдЪрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рдерд╛ред

рд▓рд╛рд▓


RED , рдЙрд░реНрдл random early detection , random early discard рдпрд╛ random early drop - рд░рд╛рдЙрдЯрд░ рдФрд░ рд╢реЗрдкрд░реНрд╕ рдореЗрдВ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрддрд╛рд░ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИред рдЗрд╕рдХрд╛ рднреМрддрд┐рдХ рдЕрд░реНрде рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ: рдЬрдм рдХрддрд╛рд░ рднрд░реА рд╣реЛрддреА рд╣реИ рддреЛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдФрд░ рдЖрдкрдХреЛ рд╕рдм рдХреБрдЫ (рдЯреЗрд▓рдбреНрд░реЙрдк) рдЫреЛрдбрд╝рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо рдХреБрдЫ рд╕рдВрднрд╛рд╡реНрдпрддрд╛ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЯ рдЫреЛрдбрд╝рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рд╕рдВрднрд╛рд╡рдирд╛ рдЦреБрдж рдмрдлрд╝рд░ рдореЗрдВ рдЦрд╛рд▓реА рдЬрдЧрд╣ рдХреЗ рд╕реАрдзреЗ рдЖрдиреБрдкрд╛рддрд┐рдХ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП Random Early Drop ред

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

materiel


рдЧрдгрд┐рдд рдпрд╣рд╛рдБ рддреАрд╕рд░реА рдХрдХреНрд╖рд╛ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЪрд┐рддреНрд░ рдФрд░ рдПрдХ рд╕реВрддреНрд░ рджреАрдЬрд┐рдП:

рддреНрдпрд╛рдЧ


PHP рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред рдореИрдВ рд╕реА рдореЗрдВ рд░реЗрдб рдЗрдВрдбрд┐рдпрди рд▓рд┐рдЦрддрд╛ рд╣реВрдВред

рдПрдкреАрд╕реА рдкреИрдЪ


рдЙрддреНрдкрд╛рджрди рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ PoC рдХреА рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЫрдд рд╕реЗ 75% рдХрд╛ рдореВрд▓реНрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, drop_threshold рдХреЛ drop_threshold рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕реВрдЪрдХрд╛рдВрдХ: apc_cache.c
================================================== =================
--- apc_cache.c ( рд╕рдВрд╢реЛрдзрди 320057 )
+++ apc_cache.c ( рдХрд╛рдо рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ )
@@ - @ режрел , рем + , режрел , резрей @@
рд╡рд╛рд╖реНрдкрд╢реАрд▓ apc_cache_entry_t * value = NULL;
рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд▓рдВрдмреА рдПрдЪ;

+ / * APC-RED PATCH * /
+ const int drop_threshold = 75 ;
+ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЕрдВрддрд░ рд╕рдВрднрд╛рд╡рдирд╛ = 0 ;
+ int red_cf = 0 ;
+ рдЫреЛрдЯреА рдмреВрдВрдж = 0 ;
APC-RED PATCH * рдХрд╛ + / * рдЕрдВрдд
+
рдЕрдЧрд░ ( apc_cache_busy ( рдХреИрд╢ ) )
{
/ * рдХреИрд╢ рдХреНрд▓реАрдирдЕрдк рдкреНрд░рдЧрддрд┐ рдореЗрдВ * /
@@ - 720 , 8 + 727 , 25 @@
рдЬрдмрдХрд┐ ( * рд╕реНрд▓реЙрдЯ ) {
рдЕрдЧрд░ ( h == ( * рд╕реНрд▓реЙрдЯ ) -> key.h ) &&
рдореЗрдореЙрдореНрдк ( ( * рд╕реНрд▓реЙрдЯ ) -> key.data.user.identifier, strkey, keylen ) ) {
+ / * APC-RED PATCH * /
+ рдЕрдЧрд░ ( ( * рд╕реНрд▓реЙрдЯ ) -> рдореВрд▓реНрдп-> data.user.ttl ) {
+ red_cf = ( t - ( * рд╕реНрд▓реЙрдЯ ) -> creation_time ) * 100 /
+ ( * рд╕реНрд▓реЙрдЯ ) -> рдореВрд▓реНрдп-> data.user.ttl;
+ рдЕрдЧрд░ ( red_cf> = 100 ) {
+ рдбреНрд░реЙрдк = 1 ;
+ }
+ рдФрд░ рдЕрдЧрд░ ( red_cf <= drop_threshold ) {
+ рдбреНрд░реЙрдк = 0 ;
+ }
+ рдФрд░ {
+ рд╕рдВрднрд╛рд╡рдирд╛ = ( red_cf - drop_threshold ) * 100 / ( 100 - drop_threshold ) ;
+ рдбреНрд░реЙрдк = ( рдЖрд░реНрдХ 4 рдЖрдпрд╛рдореА ( ) % 100 ) <рд╕рдВрднрд╛рд╡рдирд╛? 1-0 ;
+ }
+ }
APC-RED PATCH * рдХрд╛ + / * рдЕрдВрдд
+
/ * рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдПрдХ рдХрдард┐рди TTL рджреНрд╡рд╛рд░рд╛ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдИ рд╣реИ * /
- рдЕрдЧрд░ ( ( * рд╕реНрд▓реЙрдЯ ) -> рдореВрд▓реНрдп-> data.user.ttl && ( time_t ) ( ( * рд╕реНрд▓реЙрдЯ ) -> рд╕реГрд╖реНрдЯрд┐_рдЯрд╛рдЗрдо + ( * рд╕реНрд▓реЙрдЯ ) -> рдореВрд▓реНрдп-> data.user.ttl ) <t
+ if ( ( * * рд╕реНрд▓реЙрдЯ ) -> value-> data.user.ttl && ( time_t ) ( ( * рд╕реНрд▓реЙрдЯ ) -> рд╕реГрд╖реНрдЯрд┐_рдЯрд╛рдЗрдо + ( * рд╕реНрд▓реЙрдЯ ) -> рдореВрд▓реНрдп-> data.user.ttl ) <t | | рдбреНрд░реЙрдк ) {
#if ( USE_READ_LOCKS == 0 )
/ * рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдореЗрдореЛрд░реА-рдлреНрд░реЗрдВрдбрд▓реА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рд╣реИ, рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░рд╛рдЗрдЯ-рд▓реЙрдХ рд╣реИ
* рд╕рд╛рде рд╣реА рдЗрд╕реЗ рд╣рдЯрд╛рдП рдЧрдП_рд▓рд┐рд╕реНрдЯ рдореЗрдВ рджрд╛рдИрдВ рдУрд░ рд▓реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛ рдПрдХ рд╕рдореНрдорд┐рд▓рд┐рдд

рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдкреИрдЪ рд╣рдм рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рддрдиреЗ рдкрд╛рд░реНрд╕ рд╕реЗ рдЧреБрдЬрд░рд╛ рд╣реИ, рдпрд╣ рд╢рд╛рдпрдж рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд▓рд┐рдВрдХ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЫреЛрдбрд╝ рджреЗрдВ: рдкреИрдЪ- apc_red.patch

рд╕реБрдВрджрд░ рдкрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм


рдпрд╣ APC рдХреЛрдб (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, liburcu рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдореЗрдВ RCU рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рднреА рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдЪреНрдЪ рднрд╛рд░ рдХреЗ рддрд╣рдд рдЗрд╕реЗ rwlock (рд╡реИрд╕реЗ, рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╣рд╛рд▓ рд╣реА рдореЗрдВ APC рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛) рдореЗрдВ рдЪрд▓рд╛рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред APC рд╣реА рд▓рдВрдмреЗ рд╕рдордп рддрдХ PHP рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд░рд╣рд╛ рд╣реЛрдЧрд╛ред

рдЖрдк рдпрд╣ рднреА рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ drop_threshold рдХреЛ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ drop_threshold рдХреНрдпреЛрдВрдХрд┐ drop_threshold рдЬреИрд╕реА рдХреБрдЫ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдореЗрдВ phpbb рдСрд▓-рдУрд╡рд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ 50% рддрдХ рдереНрд░реЗрд╢реЛрд▓реНрдб рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд , рдпрд╣ "рд╕реБрд╡рд┐рдзрд╛" рдХреЛ 100% рдХреА рд╕реАрдорд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд▓рд╛рдпрдХ" рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдлрд┐рд░ рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдПрдирд╛рд▓реЙрдЧреНрд╕ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Adaptive / Active RED (ARED) ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреИрд╢ рдХреНрд╖рдп рдХреА рд╕рдорд╕реНрдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рд▓рдбрд╝рд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЖрдк рдЖрдВрджреНрд░реЗрдИ рд╕реНрдорд┐рд░рдиреЛрд╡ ( рд╕реНрдорд╛рдЗрд░рд╛ ) рджреНрд╡рд╛рд░рд╛ рд╣рд╛рдИ рд▓реЛрдб 2008 рдкрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд░рд┐рдкреЛрд░реНрдЯ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ: рд╡реЗрдм, рдХреИрд╢рд┐рдВрдЧ рдФрд░ рдореЗрдордХрд╛рд╕реНрдЯ

Source: https://habr.com/ru/post/In133910/


All Articles