Эксперымент па павышэнні эфектыўнасці працы ўтыліты cat

Арыядна Коніл (Ariadne Conill), стваральнік музычнага прайгравальніка Audacious, ініцыятар распрацоўкі пратаколу IRCv3 і лідэр каманды па забеспячэнні бяспекі Alpine Linux, правяла даследаванне наколькі можна аптымізаваць утыліту cat, якая ажыццяўляе выснову ў стандартны выходны струмень аднаго або некалькіх файлаў. Для паляпшэння прадукцыйнасці cat у Linux прапанавана два варыянты аптымізацый, заснаваных на выкарыстанні сістэмных выклікаў sendfile і splice для прамога капіявання дадзеных паміж файлавымі дэскрыптарамі на ўзроўні ядра без пераключэння кантэксту ў прастору карыстача.

Базавая рэалізацыя, якая выкарыстоўвае традыцыйныя выклікі read і write, якія прыводзяць да пераключэння кантэксту, пры капіяванні 4ГБ файла з tmpfs паказала прадукцыйнасць 3.6 GB/s. Варыянт на базе sendfile дазволіў павысіць прадукцыйнасць да 6.4/11.6 GB/s, а варыянт на базе splice – да 3/XNUMX GB/s, г.зн. аказаўся хутчэй зыходнага варыянту больш чым у XNUMX разы.

Крыніца: opennet.ru

Дадаць каментар