قم بتخزين أكثر من 3 جيجابايت من إطارات الفيديو في الذاكرة، على نظام تشغيل 32 بت

StackOverflow https://stackoverflow.com/questions/41643

  •  09-06-2019
  •  | 
  •  

سؤال

لدينا في العمل تطبيق لتشغيل تسلسلات أفلام OpenEXR بدقة 2K (2048*1556 بكسل).أنه يعمل بشكل جيد..بصرف النظر عن التسلسلات التي يزيد حجمها عن 3 غيغابايت (شائع جدًا)، فيجب إلغاء تحميل الإطارات القديمة من الذاكرة، على الرغم من حقيقة أن جميع الأجهزة تحتوي على 8-16 غيغابايت من الذاكرة (والتي يمكن معالجتها عبر عناصر Linux BIGMEM).

يجب أن يتم تخزين الإطارات مؤقتًا في الذاكرة لتشغيلها في الوقت الفعلي.نظام التشغيل عبارة عن توزيعة Fedora Distro 32 بت عمرها عدة سنوات (لا يمكن ترقيتها إلى 64 بت في المستقبل المنظور).الحد الأقصى لكل عملية هو 3 جيجابايت لكل عملية.

في الأساس، هل من الممكن تخزين أكثر من 3 جيجابايت من البيانات في الذاكرة مؤقتًا، بطريقة أو بأخرى؟كانت فكرتي الأولية هي نشر البيانات بين عمليات متعددة، لكن ليس لدي أي فكرة عما إذا كان هذا ممكنًا أم لا.

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

المحلول

ماذا عن إنشاء محرك أقراص RAM وتحميل الملف فيه ...بافتراض أن محرك ذاكرة الوصول العشوائي (RAM) يدعم عناصر BIGMEM لك.

يمكنك استخدام عمليات متعددة:تقوم كل عملية بتحميل عرض للملف كمقطع ذاكرة مشترك، ثم تقوم عملية المشغل بتعيين المقاطع بدورها حسب الحاجة.

نصائح أخرى

قد يكون أحد الاحتمالات هو استخدام mmap.يمكنك تعيين/إلغاء تعيين أجزاء مختلفة من بياناتك في نفس منطقة الذاكرة الافتراضية.يمكنك تعيين مجموعة واحدة فقط في كل مرة، ولكن طالما أن هناك ذاكرة فعلية كافية، يجب أن تظل البيانات موجودة.

يا لها من مشكلة مثيرة للاهتمام :)

(يحرر:أوه، لقد قرأت للتو منشور Rob's ram Drive...لقد تحمست بشدة لهذه المشكلة...ولكن لدي المزيد لأقترحه، لذا لن أحذف)

سيكون من الممكن ل...

  1. قم بإعداد قرص ذاكرة وصول عشوائي متعدد الجيجابايت، ثم
  2. تعديل البرنامج للقيام بكل ما يقرأه من "القرص"؟

أعتقد أن جزء قرص ذاكرة الوصول العشوائي هو المكان الذي ستكون فيه المشكلة بأكملها، نظرًا لأن حجم قرص ذاكرة الوصول العشوائي سيعتمد على نظام التشغيل ونظام الملفات.قد يتعين عليك إنشاء أقراص متعددة من ذاكرة الوصول العشوائي (RAM) وجعل الكود الخاص بك ينتقل بينها.أو ربما يمكنك إعداد شريط RAID-0 على أقراص متعددة من ذاكرة الوصول العشوائي.أو، إذا كانت لا تزال هناك قيود على نظام التشغيل ويمكنك تحمل تكلفة إسقاط زوجين كبيرين (4K؟)، فقم بإعداد مجموعة شرائح RAID-0 للأجهزة مع بعض محركات الأقراص ذات الحالة الصلبة الجديدة فائقة السرعة.أو...

متعة، متعة، متعة.

تأكد من المتابعة!

أفترض أنه يمكنك تعديل التطبيق.إذا كان الأمر كذلك، فإن أسهل شيء هو تشغيل التطبيق عدة مرات (مرة واحدة لكل مقطع فيديو بحجم 3 جيجابايت)، وجعل كل واحد منهم يحمل مقطعًا من الفيديو، واستخدام برنامج آخر لمزامنتهم بحيث يتحكم كل منهم في مخزن الإطارات المؤقت (أو مخرج فيديو آخر) بدوره.

ربما ستكون المزامنة فوضوية بعض الشيء، ولكن يمكن تبسيطها إذا كان لكل تطبيق مخزن مؤقت للإطارات خاص به ويقوم برنامج المزامنة بتوجيه وحدة تحكم الفيديو إلى مخزن الإطارات المؤقت الصحيح بين الإطارات عند التبديل إلى التطبيق التالي.

@dbr قال:

توجد آلة مراجعة مزودة بمصفوفة RAID من قنوات الألياف السخيفة التي يمكنها تشغيل ملفات بحجم 2K مباشرة من المصفوفة بسهولة.تكمن المشكلة في محطات عمل الفنانين، لذا لن تكون مصفوفة RAID واحدة بقيمة 4000 دولار، بل ستكون مئات..

حسنًا، إذا كان بإمكانك قبول حد يصل إلى 30 جيجابايت تقريبًا، فربما يكون محرك أقراص SSD واحد بسعة 36 جيجابايت كافيًا؟أعتقد أن تكلفة كل منها تصل إلى ألف دولار أمريكي تقريبًا، وقد تكون معدلات البيانات كافية.قد يكون هذا أرخص من نهج ذاكرة الوصول العشوائي النقي.هناك أحجام أصغر متاحة أيضًا.إذا كان ~ 60 جيجابايت كافيًا، فمن المحتمل أن تتمكن من الحصول على مجموعة JBOD مكونة من 2 لمضاعفة التكلفة، وتخطي وحدة تحكم RAID.تأكد فقط من إلقاء نظرة على خيارات SSD ذات النهاية الأعلى - فالنهاية المنخفضة مليئة بشرائح الذاكرة المجيدة.:ص

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