Facebook Linux ядросу үчүн пластинка эс тутумун башкаруунун жаңы механизмин сунуштады

Роман Гущин (Роман Гущин) Facebookтан жарыяланган Linux ядросун иштеп чыгуучулардын почта тизмесинде жаңы эстутумду бөлүштүрүү контроллерин ишке ашыруу менен патчтардын топтому плитанын (плитанын эс тутумунун контроллери). Жаңы контроллер плиталардын эсебин эстутум барактарынын деңгээлинен ядро ​​​​объектисинин деңгээлине жылдыруу менен өзгөчөлөнөт, бул ар бир топко өзүнчө плита кэштерин бөлүштүрүүнүн ордуна, ар кандай круппаларда плита барактарын бөлүшүүгө мүмкүндүк берет.

Сунушталган ыкма плитаны колдонуунун эффективдүүлүгүн жогорулатууга, плита үчүн колдонулган эстутумдун көлөмүн 30-45% кыскартууга жана ядронун жалпы эстутум керектөөсүн олуттуу кыскартууга мүмкүндүк берет. Кыймылсыз плиталардын санын азайтуу менен эс тутумдун фрагментациясын азайтуу да оң натыйжа берет. Жаңы эстутум контроллери плиталарды эсепке алуу үчүн кодду кыйла жөнөкөйлөтөт жана ар бир топ үчүн плиталардын кэштерин динамикалык түрдө түзүү жана жок кылуу үчүн татаал алгоритмдерди колдонууну талап кылбайт. Жаңы ишке ашыруудагы бардык эс тутум топтору плиталардын кэштеринин жалпы топтомун колдонушат жана плита кэштеринин иштөө мөөнөтү мындан ары cgroup аркылуу орнотулгандардын иштөө мөөнөтүнө байланыштуу эмес. чектөөлөр эстутум пайдалануу боюнча.

Жаңы плита контроллерунда ишке ашырылган ресурстун так эсеби теориялык жактан CPUну көбүрөөк жүктөшү керек, бирок иш жүзүндө айырмачылыктар анча деле чоң эмес болуп чыкты. Тактап айтканда, жаңы плита контроллери бир нече ай бою Facebook серверлеринде ар кандай жүктөмдөрдүн түрлөрүн иштетүүдө колдонулуп келген жана байкалаарлык регрессиялар азырынча аныкталган эмес. Ошол эле учурда, эстутум керектөөнүн олуттуу кыскарышы байкалат - кээ бир хосттордо 1 ГБ чейин эстутумду үнөмдөөгө мүмкүн болгон, бирок бул көрсөткүч жүктүн мүнөзүнө, оперативдүү эстутумдун жалпы көлөмүнө, процессорлордун санына көз каранды. жана эс тутум менен иштөөнүн өзгөчөлүктөрү. Мурунку сыноолор көрсөтүү эстутум керектөөнү веб фронтунда 650-700 МБ (плита эстутумунун 42%), DBMS кэши бар серверде 750-800 МБ (35%) жана DNS серверинде 700 МБ (36%) кыскартуу.

Source: opennet.ru

Комментарий кошуу