Lwaki okugabanya kwa C++ (m)okusooka bulijjo kuba 72 KB?
Ebiteeso
Mewayz Team
Editorial Team
Ekyama Eri emabega w'Okugabanya Kwo okwa C++ Okusooka
Owandiika pulogulaamu ya C++ ennyangu. Enkolagana emu empya. Bytes nnya. Okuba omuliro strace oba memory profiler yo gyoyagala, era awo weri — enkola yo yaakasaba roughly 72 KB okuva ku nkola y'emirimu. Si bytes 4. Si bytes 64. Ekijjuvu kya 72 KB. Bw’oba wali otunuulidde ennamba eyo n’okwebuuza oba ebikozesebwa byo byali bikulimba, si ggwe wekka. Enneeyisa eno eringa ey’ekikugu kye kimu ku bibuuzo ebisinga okubuuzibwa mu bakola C++ nga basima mu bintu eby’omunda mu jjukira omulundi ogusooka, era eky’okuddamu kitutwala ku lugendo olusikiriza okuyita mu layers ezituula wakati wa code yo ne hardware yennyini.
Ekibaawo Nga Okubira ekipya
Okutegeera omuwendo gwa 72 KB, olina okulondoola olujegere lw'okugaba mu bujjuvu. Koodi yo eya C++ bw’ekola new int, omukung’aanya avvuunula ekyo mu kuyita eri operator new, nga ku nkola za Linux ezisinga obungi egaba ku malloc okuva ku glibc. Naye malloc tesaba butereevu kernel bytes 4 eza memory. Kernel ekola mu mpapula — mu ngeri entuufu 4 KB ku x86_64 — era omuwendo gw’okuyita enkola munene nnyo bw’ogeraageranya n’okuyingira mu jjukira okwangu. Okuyita brk() oba mmap() ku buli kugabanya kwa muntu kinnoomu kyandifudde pulogulaamu yonna etali ya makulu okusiiga okuyimirira.
Mu kifo ky'ekyo, glibc's memory allocator — enkola eyitibwa ptmalloc2, yennyini eyava mu Doug Lea's classic dlmalloc — ekola nga omutabaganya. Esaba bulooka ennene ez’okujjukira okuva mu kernel upfront, olwo n’eziyoola mu butundutundu obutonotono nga pulogulaamu yo bw’ezeetaaga. Eno y’ensonga enkulu lwaki okugabanya kwo okwa 4-byte okusooka kuleeta okusaba okunene ennyo eri enkola y’emirimu. Omugabi w’ebintu tabeera wa kwonoona. Kwe kubeera n’obukodyo.
Okusalasala 72 KB: Bytes gye zigenda
Okugabanya okusooka kuva mu bitundu ebiwerako eby'enjawulo ekiseera ky'okudduka kye kirina okutandika nga tekinnakukwasa wadde byte emu ey'ekijjukizo ekikozesebwa. Okutegeera buli kitundu kinnyonnyola lwaki ennamba etuuka we yatuukira.
Ekisooka, malloc ya glibc etandika ekisaawe ekikulu — ensengeka y'ebitabo enkulu elondoola engabanya zonna ku thread enkulu. Ekisaawe kino kirimu metadata y'entuumu, ebiraga olukalala olw'eddembe, n'ensengeka za bin ez'obunene obw'enjawulo obw'okugaba. Omugabanya agaziya okuwummulamu kwa pulogulaamu ng’ayita mu sbrk(), era okugaziya okusooka kufugibwa parameter ey’omunda eyitibwa M_TOP_PAD, esookera ddala ku 128 KB ya padding. Naye, okusaba kwennyini okusooka kutereezebwa ku kusengeka kw'olupapula n'ekifo ky'okuwummulamu ekiriwo, ekitera okuvaamu okusaba okusooka okutono — okutera okukka okumpi n'omuwendo ogwo ogwa 72 KB ku nkola eyaakatandika.
Ekyokubiri, okuva glibc 2.26, omugabi atandika thread-local cache (tcache) ku kukozesa okusooka. tcache erimu ebibbo 64 (ekimu buli kiraasi ya sayizi y’okugabanya okutono), buli emu esobola okukwata ebitundu ebiwera 7 ebiterekeddwa. tcache_perthread_struct yennyini enywa KB nga 1, naye ekikolwa ky'okugitandika kivaako enteekateeka y'ekisaawe ekigazi. Ekyokusatu, ekiseera ky’okudduka ekya C++ kyakola dda okugaba nga main() yo tennatuuka wadde okudduka — abazimbi abatakyuka, okutandikawo buffer ya iostream ku std::cout n’emikwano, n’okuteekawo ekifo byonna biyamba ku kigere ekyo eky’entuumu ekisooka.
Enkola y’Ekisaawe ne Lwaki Okugaba Nga Tennabaawo Kigezi
Okusalawo okusooka okugabanya ekitundu ekinene eky'okujjukira okusinga okukisaba ebitundutundu si kabenje ka kussa mu nkola. Kiba kigenderere kya yinginiya okusuubulagana nga kisibuka mu makumi g’emyaka egy’obumanyirivu mu kukola pulogulaamu z’enkola. Buli kuyita eri brk() oba mmap() kuzingiramu okukyusa embeera okuva mu kifo ky'omukozesa okudda mu kifo kya kernel, okukyusa maapu z'ekijjukizo eky'omubiri eky'enkola, n'okulongoosa emmeeza y'olupapula eziyinza okubaawo. Ku byuma eby’omulembe, okuyita enkola emu kugula nga nanoseconds 100-200 — ekitaliimu nsa mu kweyawula, eky’akatyabaga ku kigero.
Lowooza ku pulogulaamu ekola engabanya entonotono 10,000 mu kiseera ky'okutandika. Awatali kugabanya nga tekunnabaawo, ekyo kyandibadde kitegeeza okuyita enkola 10,000, nga kugula milisekondi nga 1-2 ez’omuwendo omulongoofu. Nga tulina omugabi owesigamiziddwa ku kisaawe, okugaba okusooka kuleeta okuyita kw’enkola emu, era engabanya eziddako ziweebwa service yonna mu kifo ky’omukozesa okuyita mu kubala kw’omulaga n’emirimu egy’olukalala oluyungiddwa — buli emu etwala nanoseconds nga 10-50. Okubala tekuliimu kubuusabuusa: okugaba nga tekunnabaawo kuwangula okusinziira ku biragiro by’obunene.
KB 72 z'olaba ku kugabanya kwo okusooka si kujjukira kwonooneka — kwe kuteeka ssente mu nkola. Omugabanya aba akuba bbeeti nti pulogulaamu yo ejja kukola engabanya endala mu bbanga ttono, era kumpi mu buli mbeera ey’ensi entuufu, bbeeti eyo esasula bulungi. Omuwendo gw’ekifo ky’endagiriro ey’omubiri (virtual address space) ekitakozesebwa mu bukulu biri ziro ku nkola ez’omulembe eza 64-bit.
nga bwe kiriOkujjukira okw’omubiri vs. Okujjukira okw’omubiri: Lwaki Tekirina makulu
Ekisinga okweraliikiriza mu bakola okusisinkana enneeyisa eno omulundi ogusooka kwe kwonoona eby'obugagga. Bwemba nneetaaga bytes 4 zokka, lwaki program yange enywa 72 KB? Entegeera enkulu eri nti okujjukira okw’omubiri si kujjukira kwa mubiri. Glibc bw’eyongera ku program break ne 72 KB, kernel etereeza enkola ya virtual memory mappings, naye tedda mabega mangu mpapula ezo ne physical RAM. Empapula zennyini ezirabika zigabanyizibwa ku bwetaavu okuyita mu ensobi z’olupapula — pulogulaamu yo bw’ewandiika ku ndagiriro eyeetongodde yokka kernel y’egaba omuko gwennyini ogw’ekijjukizo.
💡 DID YOU KNOW?
Mewayz replaces 8+ business tools in one platform
CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.
Start Free →Kino kitegeeza nti newankubadde nga obunene bw’enkola yo obw’omubiri bweyongera ne 72 KB, sayizi yaayo eya resident set (RSS) — obungi bwa RAM ey’omubiri ekozesebwa ddala — yeeyongera n’empapula zokka z’okwatako mu butuufu. Ku new int emu, ekyo kitera okuba omuko gumu ogwa 4 KB, nga kwogasse n'olupapula lwonna metadata y'ekisaawe ky'ekwata. Ekifo ekisigaddewo ekirabika (virtual space) kituula awo, nga kyetegefu okukozesebwa, nga tekigula kintu kirala okuggyako ekifo kya endagiriro — nga ku bino olina TB 128 ku nkola ya Linux eya 64-bit.
Enjawulo eno nkulu nnyo nga okola profiling n'okulondoola enkola z'okufulumya. Bw’oba ozimba pulogulaamu eyeetaaga okulondoola enkozesa y’ebikozesebwa entuufu — oba SaaS backend, microservice, oba payipu y’okwekenneenya ng’ezo ezitambulira ku mikutu nga Mewayz olw’emirimu gya bizinensi — bulijjo olina okulondoola RSS okusinga sayizi ya virtual. Ebikozesebwa nga /proc/[pid]/smaps, valgrind --tool=massif, ne pmap bisobola okukuwa ebigere ebituufu eby'okujjukira okw'omubiri okusinga okubuzaabuza ebibalo by'ekijjukizo eky'omubiri.
Engeri Abagaba Enjawulo gye Bakwatamu Engabanya Esooka
Ekibalo kya 72 KB kikwata ku ptmaloc2 ya glibc. Abagabanya abalala bakola okusuubulagana okw’enjawulo, era ssente ezisookerwako ez’okugabanya zaawukana okusinziira ku nsonga eyo. Okutegeera enjawulo zino kya mugaso nga olonda omugabi w'enkola ezikwata ku nkola.
- jemalloc (ekozesebwa Facebook, FreeBSD) — Ekozesa ensengeka y’ekisaawe esinga okuba ey’obutundutundu n’ebifo ebitereka eby’obuwuzi. Overhead esooka etera okuba waggulu (emirundi mingi 200+ KB) naye etuwa omulimu omulungi ogw'emirundi mingi olw'okukendeeza ku kuyomba kw'ebizibiti.
- tcmalloc (Google's Thread-Caching Malloc) — Egabira buli thread cache ya nga 2 MB nga bwekiba, n'okugabanya nga tekunnabaawo mu ngeri ey'obukambwe. Overhead esooka eri waggulu, naye engabanya entono eziddako ziba za mangu nnyo.
- musl libc's malloc — Ekozesa dizayini ennyangu ennyo eyesigamiziddwa ku mmap ku kugabanya kwonna. Ensimbi ezisookerwako ziba ntono (emirundi mingi KB 4 zokka buli kugabanya), naye omuwendo gwa buli kugabanya guli waggulu olw’okuyita kw’enkola emirundi mingi.
- mimalloc (Microsoft) — Ekozesa engabanya eyesigamiziddwa ku bitundu nga erina ebitundu 64 MB. Okugabanya okusooka kuleeta okutereka okw’omubiri okwa 64 MB (nga waliwo okwewaayo okutono okw’omubiri), ekifo ky’endagiriro y’okusuubula olw’ekifo eky’enjawulo n’okuyita.
Okulonda wakati w'abagabanya bano kisinziira ddala ku mulimu gwo. Ku nkola za seva ezimaze ebbanga nga zikola nga zirina okugabanya okuzitowa okw'emirundi mingi, jemalloc oba tcmalloc mu bujjuvu esinga glibc's default. Ku nkola eziteekeddwamu ezikugirwa mu kujjukira, enkola ya musl ennyangu eyinza okuba ennungi wadde ng’okuyita kwa wansi. Ku nkola ezisinga eza desktop ne server ez'ekigendererwa eky'awamu, ptmaloc2's 72 KB initial overhead ekiikirira default ensaamusaamu ekola obulungi awatali tuning.
Okulongoosa Enneeyisa y'Okugaba Okusooka
Singa omuwendo ogusookerwako ogwa 72 KB ogusookerwako guba gwa buzibu mu butuufu eri ensonga yo ey’okukozesa — mpozzi ng’ozaala enkumi n’enkumi z’enkola eziwangaala, buli emu ng’ekola engabanya ntono zokka — glibc egaba tunables eziwerako okuyita mu mallopt() n’amaka ga MALLOC_ ag’enkyukakyuka z’obutonde.
Ekipimo kya M_TOP_PAD kifuga ekijjukizo eky'enjawulo omugabi ky'asaba okusukka ekyo ekyetaagisa amangu. Okugiteeka ku 0 ne mallopt(M_TOP_PAD, 0) kigamba omugabi okusaba ekyo kyokka ekyetaagisa, okukendeeza ennyo ku nsimbi ezisookerwako. Ekigerageranyo kya M_MMAP_THRESHOLD kifuga obunene waggulu okugabanya kwe kukozesa mmap mu kifo ky'ekisaawe. M_TRIM_THRESHOLD efuga nga ekijjukizo ekisumuluddwa kikomezeddwawo mu OS. Era okuva glibc 2.26, glibc.malloc.tcache_count ne glibc.malloc.tcache_max tunables zikusobozesa okufuga enneeyisa ya thread cache.
Naye, ekigambo eky'okwegendereza: okulongoosa parameters zino nga tolina benchmarking n'obwegendereza kumpi bulijjo kyongera okuleeta ebintu. Ebisookerwako byalondebwa okusinziira ku kulaga ebifaananyi eby’ensi entuufu ennyo, era bikiikirira ekifo ekiwooma eri emirimu egisinga obungi. Okuggyako ng’olina obujulizi obw’amaanyi okuva mu kukola profiling nti malloc overhead is a bottleneck — era ng’opimye enkosa y’enkyukakyuka zo — leka defaults zokka. Okulongoosa nga tekunnatuuka ku mugabi y’engeri ey’obukuusa naddala ey’okusenya yak ebadde emaze essaawa za yinginiya ezitabalika olw’omugaso omutono.
Kino Kye Kituyigiriza Ku Kukola Pulogulaamu z’Enkola
Ekyama ky’okugabanya okusooka okwa 72 KB, ku musingi gwakyo, ssomo ku layers z’okuggya. C++ ekuweereza ekirowoozo nti new int egaba bytes 4. Omutindo gw’olulimi bwe gugamba. Omuze gwo ogw’obwongo bw’atyo bw’agamba. Naye wakati wa code yo ne hardware watuula omutwalo gw’enkola ezisoosootodde — C++ runtime, C library allocator, kernel’s virtual memory subsystem, ne hardware’s MMU ne TLB — buli emu ng’eyongerako enneeyisa yaayo, okulongoosa, n’okubeera waggulu.
Kino si kizibu. Ye nsonga yonna eya pulogulaamu za pulogulaamu. Buli layeri eriwo okugonjoola ekizibu ekituufu: omugabi aliwo kale tolina kukola kuyita kwa nkola ku buli kugaba. Enkola ya virtual memory eriwo kale tolina kuddukanya physical memory butereevu. Omukwasi w'ensobi z'olupapula aliwo kale memory ekolebwa mu bugayaavu era mu ngeri ennungi. Buli layeri esuubula obwerufu obutono olw’omulimu omunene n’obulungi.
Abakola enkola ezisinga okwesigika, ezikola obulungi bebo abategeera layers zino — si lwakuba nti beetaaga okuzirowoozaako buli kiseera, wabula kubanga ekintu ekitali kisuubirwa bwe kibaawo (nga okugabanya kwa 72 KB okw’ekyama), balina model y’obwongo okutegeera lwaki. Ka obe ng’ozimba enkola y’okusuubula mu kiseera ekituufu, yingini y’emizannyo, oba omukutu gwa bizinensi oguweereza enkumi n’enkumi z’abakozesa, obusobozi bw’okukubaganya ebirowoozo ku kiki ddala koodi yo ky’ekola ku mutendera gw’enkola kye kyawula abakugu abakugu okuva ku ba njawulo. KB 72 si kizibu. Ye allocator yo ekola omulimu gwayo mu ngeri ey'amagezi.
Zimba OS Ya Bizinensi Yo Leero
Okuva ku ba freelancers okutuuka ku bitongole, Mewayz egaba amaanyi bizinensi 138,000+ nga zirina modules 207 ezigatta. Tandika ku bwereere, okulongoosa ng'okula.
|Try Mewayz Free
All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.
Get more articles like this
Weekly business tips and product updates. Free forever.
You're subscribed!
Start managing your business smarter today
Join 30,000+ businesses. Free forever plan · No credit card required.
Ready to put this into practice?
Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.
Start Free Trial →Related articles
Hacker News
Bluesky has been dealing with a DDoS attack for nearly a full day
Apr 17, 2026
Hacker News
Human Accelerated Region 1
Apr 17, 2026
Hacker News
Discourse Is Not Going Closed Source
Apr 17, 2026
Hacker News
Substrate AI Is Hiring Harness Engineers
Apr 17, 2026
Hacker News
US Bill Mandates On-Device Age Verification
Apr 17, 2026
Hacker News
Show HN: SPICE simulation → oscilloscope → verification with Claude Code
Apr 17, 2026
Ready to take action?
Start your free Mewayz trial today
All-in-one business platform. No credit card required.
Start Free →14-day free trial · No credit card · Cancel anytime