Me yasa rabon C++ (m) na farko koyaushe shine 72 KB?
Sharhi
Mewayz Team
Editorial Team
Asirin Bayan Rarraba C++ Na Farko
Kuna rubuta shirin C++ mai sauƙi. Sabuwar int guda ɗaya. bytes hudu. Kuna kunna straceko bayanin bayanan ƙwaƙwalwar da kuka fi so, kuma akwai shi - tsarin ku kawai ya buƙaci kusan 72 KB daga tsarin aiki. Ba 4 bytes ba. Ba 64 bytes ba. Cikakken 72 KB. Idan ka taba kallon wannan lambar kuma ka yi mamakin ko kayan aikinka na karya maka, ba kai kadai ba. Wannan dabi'a mai ban mamaki ita ce ɗaya daga cikin tambayoyin da aka fi yawan yi a tsakanin masu haɓakawa na C++ da ke haƙa cikin ƙwaƙwalwar ajiya a karon farko, kuma amsar ta ɗauke mu cikin tafiya mai ban sha'awa ta cikin yadudduka da ke tsakanin lambar ku da ainihin hardware.
Abin da ke faruwa Lokacin da kuka kira sabo
Don fahimtar adadi 72 KB, kuna buƙatar gano cikakken sarkar rarrabawa. Lokacin da lambar C++ ɗin ku ta aiwatar da sabuwar int, mai tarawa yana fassara hakan zuwa kira zuwa sabon mai aiki, wanda a yawancin tsarin Linux ke ba wa malloc daga glibc. Amma malloc baya tambayar kernel kai tsaye don 4 bytes na ƙwaƙwalwar ajiya. Kwaya tana aiki a cikin shafuka - yawanci 4 KB akan x86_64 - kuma farashin tsarin kiran tsarin yana da girma dangane da sauƙin ƙwaƙwalwar ajiya. Kiran brk()ko taswirar () ga kowane yanki na kowane mutum zai sa duk wani shiri maras muhimmanci ya daina aiki. A maimakon haka, glibc's memory allocator - wani aiwatarwa da ake kiraptmalloc2, da kanta ya fito daga Doug Lea's classicdlmalloc - yana aiki a matsayin ɗan tsakiya. Yana buƙatar manyan tubalan ƙwaƙwalwar ajiya daga kernel a gaba, sannan sassaƙa su cikin ƙananan guda kamar yadda shirin ku ke buƙata. Wannan shine ainihin dalilin rabon 4-byte na farko yana haifar da buƙatu mafi girma ga tsarin aiki. Mai rarrabawa ba ya zama almubazzaranci. Yana da dabara.Rarraba 72 KB: Inda Bytes ke tafiya
Ƙididdigar farko ta zo daga sassa daban-daban waɗanda dole ne lokacin aiki ya fara kafin ya ba ku ko da byte ɗaya na ƙwaƙwalwar ajiya mai amfani. Fahimtar kowane bangare yana bayyana dalilin da yasa lambar ta sauka a inda take. Na farko, glibc's malloc ya fara babban fage - tsarin ajiyar litattafai na farko wanda ke bin duk abubuwan da aka raba akan babban zaren. Wannan fage ya ƙunshi metadata don tsibi, masu nuni na kyauta, da tsarin bin don girman kasafi daban-daban. Mai rarrabawa yana tsawaita hutun shirin ta hanyarsbrk(), kuma tsawaitawar farko ana gudanar da ita ta hanyar sigar ciki mai sunaM_TOP_PAD, wacce ta gaza zuwa 128 KB na padding. Koyaya, ana daidaita ainihin buƙatar farko don daidaita shafi da matsayi na hutu, wanda galibi yana haifar da ƙarami na farko - yawanci saukowa kusa da wannan adadi mai nauyin 72 KB akan sabon tsari.Na biyu, tun daga glibc 2.26, mai rarrabawa yana ƙaddamar da cache mai zare-local(tcache) akan amfani da farko. Tcache yana ƙunshe da bins 64 (ɗaya a cikin ƙananan girman girman rabo), kowane yana iya riƙe har zuwa ƙugiya 7 da aka adana. Ita kanta tcache_perthread_struct tana cinye kusan 1 KB, amma aikin fara shi yana haifar da saitin fage mai faɗi. Na uku, lokacin aikin C++ ya riga ya yi ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun bayanai kafin main()ku ma yana gudana — masu ginawa a tsaye, ƙaddamar da buffer iostream don std::coutda abokai, da saitin yanki duk suna ba da gudummawa ga wannan sawun tudun farko.
Tsarin Fage da Me yasa Pre-Rabawa Yayi Wayo
Shawarar da za a riga an ware ƙwaƙƙwaran ƙwanƙwasa ƙwanƙwasa maimakon neman sa-in-sa ba haɗari ba ne na aiwatarwa. Kasuwancin injiniya ne da gangan wanda ya samo asali a cikin shekarun da suka gabata na ƙwarewar shirye-shiryen tsarin. Kowane kira zuwa brk()ko taswira() ya ƙunshi canjin mahallin daga sararin mai amfani zuwa sararin kernel, gyare-gyaren taswirar ƙwaƙwalwar ajiya mai kama da tsari, da yuwuwar sabunta tebur na shafi. A kan kayan aikin zamani, kiran tsarin guda ɗaya yana kashe kusan nanoseconds 100-200 - maras muhimmanci a keɓe, bala'i a sikelin.Yi la'akari da shirin da ke yin ƙananan kaso 10,000 yayin ƙaddamarwa. Ba tare da riga-kafi ba, hakan na nufin kiran tsarin 10,000, wanda ke kashe kusan mil 1-2 na tsaftataccen sama. Tare da mai ba da izini na tushen fagen fama, rabon farko yana haifar da kiran tsarin guda ɗaya, kuma ana ba da rabon 9,999 na gaba gaba ɗaya a cikin sararin mai amfani ta hanyar ƙididdige ƙididdiga da ayyukan jerin abubuwan haɗin kai - kowanne yana ɗaukar kusan 10-50 nanoseconds. Lissafin ba shi da wata ma'ana: kafin a raba kasafi ya yi nasara da oda mai girma.
72 KB da kuke gani akan rabon ku na farko ba ɓatacce bane ƙwaƙwalwar ajiya - saka hannun jari ne. Mai rarrabawa yana yin fare cewa shirin ku zai yi ƙarin kasafi nan ba da jimawa ba, kuma a kusan kowane yanayi na zahiri, wannan fare yana biya da kyau. Farashin sararin adireshin da ba a yi amfani da shi ba shi ne ainihin sifili akan tsarin zamani 64-bit.
Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwar Ƙwaƙwalwa): Me Ya Sa Ba Ya Da Mahimmanci h2>
Damuwa gama gari tsakanin masu haɓakawa da suka fuskanci wannan ɗabi'a a karon farko shine ɓarna albarkatun ƙasa. Idan ina buƙatar bytes 4 kawai, me yasa shirina yake cin 72 KB? Mahimman fahimta shine cewaƙwaƙwalwar ƙwaƙwalwa ba ƙwaƙwalwar jiki ba ce. Lokacin da glibc ya tsawaita hutun shirin da 72 KB, kernel yana sabunta taswirar ƙwaƙwalwar ajiya na tsari, amma ba ya mayar da waɗannan shafuka nan da nan tare da RAM na zahiri. Ana keɓance ainihin shafuka na zahiri akan buƙata ta hanyar kuskuren shafi — kawai lokacin da shirin ku ya rubuta zuwa takamaiman adireshin kernel ɗin ke sanya masa ainihin shafin ƙwaƙwalwar ajiya.
💡 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 →Wannan yana nufin cewa duk da girman girman tsarin aikin ku yana ƙaruwa da 72 KB, girman samazaunin saiti(RSS) - adadin RAM na zahiri da ake cinyewa - yana ƙaruwa ta shafukan da ka taɓa zahiri kawai. Don sabonsabon int guda ɗaya, wato yawanci shafi 4 KB ne, da kowane shafi da metadata na fage ya mamaye. Sauran sararin sararin samaniya yana zaune a wurin, a shirye don amfani, ba kudin komai ba sai sararin adireshi - wanda kuna da TB 128 akan tsarin Linux 64-bit.
Wannan bambance-bambancen yana da mahimmanci lokacin yin bayanin martaba da saka idanu akan aikace-aikacen samarwa. Idan kuna gina software wanda ke buƙatar bin diddigin amfani da albarkatu na gaske - ko yana da baya bayan SaaS, microservice, ko bututun nazari kamar waɗanda ke gudana akan dandamali irin suMewayzdon ayyukan kasuwanci - yakamata koyaushe ku saka idanu RSS maimakon girman kama-da-wane. Kayan aiki kamar su /proc/[pid]/smaps, valgrind --tool=massif, dapmap na iya ba ku ingantattun sawun ƙwaƙwalwar ajiya ta zahiri maimakon yaudarar ƙididdiga na ƙwaƙwalwar ajiya.
Yadda Masu Rarraba Daban-daban Ke Gudanar da Rarraba Farko
Adadin KB 72 ya keɓance ga ptmalloc2 na glibc. Sauran masu rarrabawa suna yin ciniki daban-daban, kuma rabon farko na sama ya bambanta daidai da haka. Fahimtar waɗannan bambance-bambancen yana da mahimmanci yayin zabar mai rarrabawa don aikace-aikacen da ke da hankali.- jemalloc (Facebook ke amfani da shi, FreeBSD) - Yana amfani da tsarin fage mafi girma tare da ma'ajiyar zaren wuri. Babban sama na farko yana ƙoƙarin zama mafi girma (sau da yawa 200+ KB) amma yana ba da mafi kyawun aiki mai zare da yawa saboda raguwar takaddamar kullewa.
- tcmalloc (Google's Thread-Caching Malloc) - Yana keɓance rumbun kowane zaren kusan 2 MB ta hanyar tsohuwa, tare da ƙaƙƙarfan rarrabawa. Kudin farko na farko ya fi girma, amma ƙananan ƙasƙanci na gaba suna da sauri sosai.
- musl libc's malloc - Yana amfani da ƙira mafi sauƙi bisataswiradon duk rabe-rabe. Kan farko yana da kadan (sau da yawa kawai 4 KB a kowace kasafi), amma farashin kowane yanki ya fi girma saboda yawan kiran tsarin.
- mimalloc (Microsoft) — Yana amfani da rabo na tushen yanki tare da sassan 64 MB. Rabawa na farko yana haifar da ajiyar kuɗi na 64 MB (tare da ƙaramar ƙaddamarwa ta jiki), sararin adireshi na kasuwanci don keɓaɓɓen wuri da kayan aiki.
Gyara Halayen Rarraba Farko
Idan tsohowar 72 KB na farko yana da matsala ga yanayin amfani da ku - watakila kuna haifar da dubban matakai na gajeren lokaci, kowannensu yana yin ɗimbin rabo kawai - glibc yana ba da dama da dama ta hanyar mallopt ()da MALLOC_iyalin masu canjin yanayi.
Ma'aunin M_TOP_PAD yana sarrafa adadin ƙarin ƙwaƙwalwar da mai raba ke buƙata fiye da abin da ake buƙata nan da nan. Saita shi zuwa 0 tare da mallopt(M_TOP_PAD, 0) yana gaya wa mai rabon ya nemi abin da ake buƙata kawai, yana rage yawan abin da ke cikin farko sosai. Ma'aunin M_MMAP_THRESHOLD yana sarrafa girman da ke sama wanda rabon ya yi amfani da taswirar maimakon filin wasa. The M_TRIM_THRESHOLD yana sarrafa lokacin da aka mayar da ƙwaƙwalwar ajiyar da aka saki zuwa OS. Kuma tun glibc 2.26, daglibc.malloc.tcache_countda kuma glibc.malloc.tcache_maxtunables suna ba ku damar sarrafa yanayin cache ɗin zaren.
Amma, kalmar taka tsantsan: daidaita waɗannan sigogi ba tare da yin la'akari da hankali ba kusan koyaushe yana ƙara muni. An zaɓi abubuwan da ba a cika su ba bisa fa'ida mai fa'ida ta zahiri, kuma suna wakiltar wuri mai daɗi ga mafi yawan kayan aiki. Sai dai idan kuna da kwakkwarar hujja daga bayanan samarwa cewa malloc kan gaba shine kwalabe - kuma kun auna tasirin canje-canjenku - ku bar abubuwan da ba a so su kaɗai. Haɓaka da wuri na allocator wani nau'i ne mai banƙyama na aske yak wanda ya cinye sa'o'in injiniya marasa adadi don fa'ida mara kyau.Abin da Wannan ke Koyar da Mu Game da Shirye-shiryen Sistoci
Sirrin rabon farko na 72 KB shine, a ainihinsa, darasi game daabstraction layers. C++ yana ba ku tunanin cewasabon intyana ware 4 bytes. Ma'aunin harshe ya ce haka. Misalin tunanin ku ya ce haka. Amma tsakanin lambar ku da na'urar tana zaune ɗimbin ingantattun tsare-tsare-lokacin aiki na C++, mai raba ɗakin karatu na C, tsarin ƙwaƙwalwar ajiyar kernel, da MMU da TLB na kayan masarufi - kowanne yana ƙara halayensa, ingantawa, da kuma sama.
Wannan ba aibi ba ne. Shi ne gaba ɗaya batu na software na tsarin. Kowane Layer yana wanzu don magance matsala ta gaske: mai rarrabawa ya wanzu don haka ba dole ba ne ka yi kiran tsarin don kowane rabo. Tsarin žwažwalwar ajiya yana wanzu don haka ba sai ka sarrafa ƙwaƙwalwar ajiyar jiki kai tsaye ba. Mai sarrafa kuskuren shafi yana wanzu don haka ana aiwatar da ƙwaƙwalwar ajiya cikin kasala da inganci. Kowane Layer yana cinikin ɗan ƙaramin haske don babban adadin aiki da dacewa.
Masu haɓakawa waɗanda suka gina mafi aminci, mafi girman tsarin aiki sune waɗanda suka fahimci waɗannan yadudduka - ba saboda suna buƙatar yin tunani akai akai ba, amma saboda lokacin da wani abu da ba tsammani ya faru (kamar rarrabuwar 72 KB mai ban mamaki), suna da ƙirar tunani don fahimtar dalilin da yasa. Ko kuna gina tsarin ciniki na lokaci-lokaci, injin wasa, ko dandamalin kasuwanci da ke hidimar dubban masu amfani, ikon yin tunani game da abin da lambar ku ta zahiri ke yi a matakin tsarin shine ke raba ƙwararrun masu haɓakawa daga na kwarai. 72 KB ba kwaro bane. Shi ne mai raba ku yana yin aikinsa da kyau.
Gina Kasuwancin Kasuwancin ku A Yau
Daga masu zaman kansu zuwa hukumomi, Mewayz yana ba da ikon kasuwanci 138,000+ tare da 207 hadedde kayayyaki. Fara kyauta, haɓakawa lokacin da kuka girma.
Ƙirƙiri Asusun Kyauta →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
Show HN: Spice simulation → oscilloscope → verification with Claude Code
Apr 17, 2026
Hacker News
Hospital at centre of child HIV outbreak caught reusing syringes in Pakistan
Apr 16, 2026
Hacker News
George Orwell Predicted the Rise of "AI Slop" in Nineteen Eighty-Four (1949)
Apr 16, 2026
Hacker News
Everything we like is a psyop
Apr 16, 2026
Hacker News
U.S. to Create High-Tech Manufacturing Zone in Philippines
Apr 16, 2026
Hacker News
New unsealed records reveal Amazon's price-fixing tactics, California AG claims
Apr 16, 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