कोई जानता है कि कैसे अच्छी तरह निम्नलिखित 3 गति के मामले में तुलना:Shmem बनाम tmpfs mmap
साझा स्मृति
tmpfs (/ dev/shm)
mmap (/ dev/shm)
धन्यवाद!
कोई जानता है कि कैसे अच्छी तरह निम्नलिखित 3 गति के मामले में तुलना:Shmem बनाम tmpfs mmap
साझा स्मृति
tmpfs (/ dev/shm)
mmap (/ dev/shm)
धन्यवाद!
tmpfs
के बारे में पढ़ें (वहाँ एक 32-बिट प्रक्रिया में इस तरह के रूप 4G> विशेष मामलों में जहां यह मतलब हो सकता है, कर रहे हैं) here। विशेष रूप से साझा स्मृति और tmpfs
के बीच संबंधों को समझाते हुए, उस आलेख से निम्नलिखित की प्रतिलिपि बनाई गई है।
1) There is always a kernel internal mount which you will not see at
all. This is used for shared anonymous mappings and SYSV shared
memory.
This mount does not depend on CONFIG_TMPFS. If CONFIG_TMPFS is not
set the user visible part of tmpfs is not build, but the internal
mechanisms are always present.
2) glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for
POSIX shared memory (shm_open, shm_unlink). Adding the following
line to /etc/fstab should take care of this:
tmpfs /dev/shm tmpfs defaults 0 0
Remember to create the directory that you intend to mount tmpfs on
if necessary (/dev/shm is automagically created if you use devfs).
This mount is _not_ needed for SYSV shared memory. The internal
mount is used for that. (In the 2.3 kernel versions it was
necessary to mount the predecessor of tmpfs (shm fs) to use SYSV
shared memory)
इसलिए, जब आप वास्तव में POSIX साझा स्मृति (जो मैं पहले भी करते थे) का उपयोग करें, तो glibc
/dev/shm
पर एक फ़ाइल है, जो अनुप्रयोगों के बीच डाटा साझा करने के लिए किया जाता है पैदा करेगा। फ़ाइल-डिस्क्रिप्टर जो इसे लौटाता है वह उस फ़ाइल को संदर्भित करेगा, जिसे आप उस फ़ाइल को स्मृति में मैप करने के लिए कहने के लिए mmap
पर जा सकते हैं, जैसे कि यह किसी भी "वास्तविक" फ़ाइल के साथ भी कर सकता है। आपके द्वारा सूचीबद्ध तकनीकें पूरक हैं। वे प्रतिस्पर्धा नहीं कर रहे हैं। Tmpfs
सिर्फ फाइल-सिस्टम है जो glibc
के लिए कार्यान्वयन तकनीक के रूप में इन-मेमोरी फ़ाइलों को प्रदान करता है।
एक उदाहरण के रूप में, वहाँ एक प्रक्रिया मेरी बॉक्स वर्तमान में इस तरह के एक साझा स्मृति वस्तु पंजीकृत होने पर चल रहा है:
# pwd
/dev/shm
# ls -lh
insgesamt 76K
-r-------- 1 js js 65M 24. Mai 16:37 pulse-shm-1802989683
#
"यह निर्भर करता है।" आम तौर पर, वे सभी स्मृति में हैं और सिस्टम कार्यान्वयन पर निर्भर हैं ताकि प्रदर्शन अधिकतर उपयोगों के लिए नगण्य और मंच-विशिष्ट होगा। यदि आप वास्तव में प्रदर्शन की परवाह करते हैं, तो आपको अपनी आवश्यकताओं को प्रोफ़ाइल और निर्धारित करना चाहिए। किसी भी विधि में से किसी एक को बदलने के लिए यह बहुत छोटा है।
उस ने कहा, साझा स्मृति कम से कम गहन है क्योंकि इसमें कोई फ़ाइल ऑपरेशन शामिल नहीं है (लेकिन फिर से, बहुत कार्यान्वयन-निर्भर)। यदि आपको बार-बार, नक्शा/अनमप) खोलने और बंद करने की आवश्यकता है, तो कई बार, तो यह महत्वपूर्ण ओवरहेड हो सकता है।
चीयर्स!
शॉन
"साझा स्मृति" से आपका मतलब है सिस्टम वी साझा स्मृति, है ना?
मुझे लगता है कि जब आप इसका उपयोग करते हैं तो लिनक्स एमएमएपी एक छिपी हुई tmpfs है, इसलिए यह प्रभावी रूप से tmpfs को mmaping जैसा ही है।
फ़ाइल कर रहा/tmpfs पर हे एक दंड के लिए जा रहा है ... ज्यादातर
तो गति वही है?कैसे mmap-open फ़ाइलों की तुलना सामान्य glibc खुली फ़ाइलों से की जाती है? – SyRenity