మైక్రోసాఫ్ట్ మైమల్లాక్ మెమరీ కేటాయింపు వ్యవస్థ కోసం కోడ్‌ను తెరిచింది

మైక్రోసాఫ్ట్ MIT లైసెన్స్ క్రింద ఒక లైబ్రరీని ప్రారంభించింది mmaloc భాషల రన్‌టైమ్ భాగాల కోసం మొదట సృష్టించబడిన మెమరీ కేటాయింపు వ్యవస్థ అమలు నుండి కోక и లీన్. Mimalloc వారి కోడ్‌ను మార్చకుండా ప్రామాణిక అప్లికేషన్‌లలో ఉపయోగించడం కోసం స్వీకరించబడింది మరియు malloc ఫంక్షన్‌కు పారదర్శక ప్రత్యామ్నాయంగా పని చేస్తుంది. Windows, macOS, Linux, BSD మరియు ఇతర Unix-వంటి సిస్టమ్‌లలో పని చేయడానికి మద్దతు ఇస్తుంది.

మిమల్లోక్ యొక్క ముఖ్య లక్షణం దాని కాంపాక్ట్ ఇంప్లిమెంటేషన్ (కోడ్ యొక్క 3500 లైన్ల కంటే తక్కువ) మరియు చాలా ఎక్కువ పనితీరు. IN పరీక్షలు నిర్వహించారు mimalloc అన్ని పోటీ మెమరీ కేటాయింపు లైబ్రరీలను అధిగమించింది, సహా జెమల్లాక్, tcmalloc, snmalloc, rpmalloc и నిల్వకు.

పనితీరును అంచనా వేయడానికి, ఇప్పటికే ఉన్న సమితి ప్రామాణిక పరీక్షలు కొన్ని పరీక్షలలో, మిమల్లోక్ ఇతర సిస్టమ్‌ల కంటే చాలా రెట్లు వేగంగా ఉంటుంది; ఉదాహరణకు, వివిధ థ్రెడ్‌ల మధ్య ఆబ్జెక్ట్ మైగ్రేషన్ పరీక్షలో, మిమల్లోక్ tcmalloc మరియు jemalloc కంటే 2.5 రెట్లు ఎక్కువ వేగంగా ఉన్నట్లు తేలింది. అదే సమయంలో, చాలా పరీక్షలలో, తక్కువ మెమరీ వినియోగం కూడా గమనించవచ్చు; కొన్ని సందర్భాల్లో, మెమరీ వినియోగం 25% తగ్గించవచ్చు.

మైక్రోసాఫ్ట్ మైమల్లాక్ మెమరీ కేటాయింపు వ్యవస్థ కోసం కోడ్‌ను తెరిచింది

ప్రధానంగా ఉచిత జాబితా భాగస్వామ్యాన్ని ఉపయోగించడం ద్వారా అధిక పనితీరు సాధించబడుతుంది. ఒక పెద్ద జాబితాకు బదులుగా, mimalloc చిన్న జాబితాల శ్రేణిని ఉపయోగిస్తుంది, వీటిలో ప్రతి ఒక్కటి మెమరీ పేజీకి కట్టుబడి ఉంటుంది. ఈ విధానం ఫ్రాగ్మెంటేషన్‌ని తగ్గిస్తుంది మరియు మెమరీలో డేటా స్థానికతను పెంచుతుంది. మెమరీ పేజీ అనేది ఒకే పరిమాణంలో ఉన్న బ్లాక్‌ల సమూహం. 64-బిట్ సిస్టమ్‌లలో, పేజీ పరిమాణం సాధారణంగా 64 KB. పేజీలో ఆక్రమిత బ్లాక్‌లు లేనట్లయితే, అది పూర్తిగా విముక్తమవుతుంది మరియు మెమరీ ఆపరేటింగ్ సిస్టమ్‌కి తిరిగి వస్తుంది, ఇది మెమరీ ఖర్చులు మరియు దీర్ఘకాలిక ప్రోగ్రామ్‌లలో ఫ్రాగ్మెంటేషన్‌ను తగ్గిస్తుంది.

లైబ్రరీని లింకింగ్ దశలో చేర్చవచ్చు లేదా ఇప్పటికే అసెంబుల్ చేసిన ప్రోగ్రామ్ కోసం లోడ్ చేయవచ్చు (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). లైబ్రరీ కూడా అందిస్తుంది API రన్‌టైమ్ మరియు ఫైన్-గ్రెయిన్డ్ బిహేవియర్ కంట్రోల్‌లో ఫంక్షనాలిటీని ఇంటిగ్రేట్ చేయడం కోసం, ఉదాహరణకు, ఆలస్యమైన మెమరీ రిలీజ్ హ్యాండ్లర్‌లను కనెక్ట్ చేయడం మరియు రిఫరెన్స్ కౌంటర్‌లను మోనోటోనికల్‌గా పెంచడం కోసం. వివిధ మెమరీ ప్రాంతాలలో పంపిణీ కోసం అప్లికేషన్‌లో అనేక "కుప్పలు" సృష్టించడం మరియు ఉపయోగించడం సాధ్యమవుతుంది. గుండా వెళ్ళకుండా మరియు దానిలో ఉంచిన వస్తువులను విడిగా విడిచిపెట్టకుండా, కుప్పను పూర్తిగా విడిపించడం కూడా సాధ్యమే.

లైబ్రరీని సురక్షిత మోడ్‌లో నిర్మించడం సాధ్యమవుతుంది, దీనిలో బ్లాక్ సరిహద్దుల వద్ద ప్రత్యేక మెమరీ తనిఖీ పేజీలు (గార్డ్-పేజీలు) ప్రత్యామ్నాయంగా ఉంటాయి మరియు బ్లాక్ డిస్ట్రిబ్యూషన్ యొక్క యాదృచ్ఛికీకరణ మరియు ఫ్రీడ్ బ్లాక్‌ల జాబితాల ఎన్‌క్రిప్షన్ ఉపయోగించబడతాయి. ఇటువంటి చర్యలు కుప్ప-ఆధారిత బఫర్ ఓవర్‌ఫ్లోలను ఉపయోగించడం కోసం అత్యంత సాధారణ సాంకేతికతలను నిరోధించడాన్ని సాధ్యం చేస్తాయి. మీరు సేఫ్ మోడ్‌ని ప్రారంభించినప్పుడు, పనితీరు సుమారుగా 3% తగ్గుతుంది.

మిమల్లోక్ యొక్క లక్షణాలలో, ఇది పెద్ద ఫ్రాగ్మెంటేషన్ కారణంగా ఉబ్బరంతో సమస్యలకు గురికాదని కూడా గుర్తించబడింది. చెత్త దృష్టాంతంలో, మెటాడేటా కోసం మెమరీ వినియోగం 0.2% పెరుగుతుంది మరియు పంపిణీ చేయబడిన మెమరీ కోసం 16.7%కి చేరుకోవచ్చు. వనరులను యాక్సెస్ చేసేటప్పుడు వైరుధ్యాలను నివారించడానికి, మిమల్లోక్ అణు కార్యకలాపాలను మాత్రమే ఉపయోగిస్తుంది.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి