Վերադառնալ
Կառուցման կախվածությունների ստուգումը eBPF-ով արագացել է 54 անգամ
SiTech AI Team2 წთ. საკითხავი

Կառուցման կախվածությունների ստուգումը eBPF-ով արագացել է 54 անգամ

Վասեդայի համալսարանի հետազոտողները ստեղծել են mkcheck2-ը, որը կառուցման կախվածությունները ստուգում է ptrace-ի փոխարեն eBPF-ով և վերլուծում է գրաֆի փոփոխված մասերը։ 300 նախագծում մեկ commit-ի վերլուծության ժամանակը 1267,49 վայրկյանից իջել է 23,56 վայրկյանի։

Ճապոնիայի հետազոտողները ստեղծել են գործիք, որը ծրագրային ապահովման կառուցման կախվածությունները ստուգում է նախորդ մեթոդներից շատ ավելի արագ. այն ptrace-ի փոխարեն համակարգային կանչերը հետևում է eBPF-ով և վերլուծում է կախվածությունների գրաֆի միայն փոփոխված մասը։ Ըստ The Register-ի՝ mkcheck2-ը ստուգման արագությունը բարձրացնում է 54 անգամ։

Կառուցման կախվածությունները սահմանում են, թե որ ֆայլերը պետք է կրկին կառուցվեն, երբ փոխվում է մեկ այլ ֆայլ։ Եթե այդ սահմանումը սխալ է, կառուցումը կա՛մ ձախողվում է, կա՛մ տալիս է սխալ արդյունք։

Ինչու է ստուգումն այդքան թանկ

ICSE 2026-ում ներկայացված հոդվածում Վասեդայի համալսարանի հետազոտողներ Yuta Saito-ն և Hironori Washizaki-ն Տոկիոյի առցանց համալսարանի Kazunori Sakamoto-ի հետ նշում են, որ կախվածությունների հետ կապված սխալները՝ և՛ բացակայող, և՛ ավելորդ կախվածությունները, խոշոր նախագծերում կազմում են կառուցման սխալների ավելի քան 50%-ը։

Ավանդական մոտեցումը հիմնված է ptrace-ի վրա, որը աշխատում է օգտատիրոջ տարածքում և ամեն համակարգային կանչի պահին կանգնեցնում է ընթացքը ու փոխում համատեքստը։ Հեղինակների չափումներով՝ կառուցման ժամանակը mkcheck գործիքի դեպքում միջինում աճում էր 101,7%-ով, իսկ BuildFS-ի դեպքում՝ 148,0%-ով։

eBPF և ինկրեմենտալ վերլուծություն

mkcheck2-ը ծանրաբեռնվածությունը փոխարինում է երկու եղանակով։ Build Tracer մոդուլը eBPF ծրագրերն աշխատացնում է միջուկի ներսում և զտում է համակարգային կանչերը իրական ժամանակում՝ առանց ptrace-ի պահանջած համատեքստի փոխարկումների։ Կախվածությունների գրաֆի կառուցիչը հետևված ֆայլային գործողություններից ստեղծում է այն կախվածությունների նկարագրությունը, որոնք կառուցումն իրականում օգտագործել է, և պահպանում դրանց պատմությունը։ Ինկրեմենտալ անալիզատորը համեմատում է տարբեր կառուցումների գրաֆները և ստուգում է միայն փոփոխված մասերը։

«Մեր մոտեցումը օգտագործում է eBPF-ը՝ համակարգային կանչերի մոնիտորինգի թեթև տեխնոլոգիան, ինկրեմենտալ վերլուծության հետ միասին, ինչը զգալիորեն կրճատում է ստուգման ժամանակը»,- բացատրում է Washizaki-ն։

Արդյունքներ և սահմանափակումներ

Գնահատումն ընդգրկել է 300 բաց կոդով նախագիծ, ներառյալ BuildFS-ի օգտագործած Make կորպուսը։ Նախագծերի միջինում կառուցման լրացուցիչ ծախսը իջել է 0,3%-ի, մինչդեռ ptrace-ի վրա հիմնված գործիքներում այն 101,7% և 148,0% էր. հեղինակները դա նկարագրում են որպես մինչև 99,7%-ով կրճատում։ Մեկ commit-ի վերլուծության միջին ժամանակը 1267,49 վայրկյանից նվազել է 23,56 վայրկյանի, իսկ տասը commit-ի դեպքում գործիքը 75-80%-ով արագ է։

Ճշգրտությունը չի տուժել. 15 740 բացակայող կախվածության հայտնաբերման ամբողջականությունը 100% է, իսկ 11 720 ավելորդինը՝ 92%, առանց կեղծ դրական ազդանշանների։ Անհրաժեշտ է ժամանակակից Linux միջուկ՝ eBPF-ի աջակցությամբ և CAP_SYS_ADMIN-ի նման իրավունքներով։ Ըստ Washizaki-ի՝ տեխնոլոգիան կարող է կարևոր լինել ամպային և AI ենթակառուցվածքներում, որտեղ շարունակական ինտեգրացիայում արագ ստուգումը կրիտիկական է։

SSiTech

SiTech — AI-ով հզորացված վեբ մշակում

Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։