سؤال

هل يعرف شخص ما مدى جودة 3 مقارنة 3 من حيث السرعة:

  • ذكريات مشتركه

  • TMPFS (/ dev / shm)

  • MMP (/ dev / shm)

شكرا!

هل كانت مفيدة؟

المحلول

أقرأ عن tmpfs هنا. وبعد يتم نسخ ما يلي من تلك المقالة، أوضح العلاقة بين الذاكرة المشتركة و 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
#

نصائح أخرى

"هذا يعتمد." بشكل عام، فإنهم جميعا في الذاكرة والاعتماد على تنفيذ النظام، لذلك سيكون الأداء ضئيلا ومحققا لمعظم الاستخدامات. إذا كنت تهتم حقا بالأداء، فيجب عليك ملف تعريف وتحديد متطلباتك. انها تافهة جميلة لاستبدال أي واحد من تلك الأساليب مع آخر.

ومع ذلك، فإن الذاكرة المشتركة هي الأقل كثافة لأنها لا توجد عمليات ملفات مشتركة (ولكن مرة أخرى، تعتمد على التنفيذ للغاية). إذا كنت بحاجة إلى فتح وإغلاق (خريطة / UNMP) بشكل متكرر، الكثير في المرات، قد يكون الأمر كبيرا.

هتافات!
شون

عن طريق "الذاكرة المشتركة" تقصد النظام الخامس النظام الخامس، أليس كذلك؟

أعتقد أن Linux MMAP هي TMPFS مخفية عند استخدام هذا، لذلك فهي فعالة كما mmaping a tmpfs.

القيام بالملف I / O على TMPFS سيكون له عقوبة ... في الغالب (هناك حالات خاصة حيث قد تكون منطقية، مثل> 4G في عملية 32 بت)

TMPFS هو الأبطأ. ذاكرة مشتركة و mmap هي نفس السرعة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top