it-swarm.asia

شارك RAM عبر الشبكة

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

يحتوي النظام على 8 جيجابايت من ذاكرة الوصول العشوائي ، ويستهلك التطبيق أكثر من 6 جيجابايت.

48
Innov

 لقد فكرت فقط في تطبيق قائم بذاته يتم تشغيله على جهاز "قياسي" مع عدم القدرة على تثبيته في مكان آخر أو استخدام أجهزة أو برامج متخصصة. تتناول الإجابات الأخرى (بشكل صحيح) ترحيل البرامج أو الأجهزة المخصصة للمهمة.

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

100 ميغابايت/ثانية هي جزء صغير جدًا من سرعة RAM الموجودة بالفعل في نظامك. سيكون برنامجك بطيئًا بشكل مؤلم ويشعر أنه يعمل على جهاز كمبيوتر من أوائل التسعينيات

تعد محركات الأقراص الصلبة الحديثة ، أسرع من ذلك في القراءة والكتابة المتسلسلة. سواقات الأقراص الصلبة أسرع عدة مرات.

هذا يتجاهل مشاكل الكمون التي ستجعل البرنامج الخاص بك من حيث الحجم أبطأ مرة أخرى.

نظرًا للبطء والمشاكل الفنية الأخرى التي تنطوي عليها ، فهذه ليست مشكلة اعتبرها أي شخص على الأرجح جديرة بمحاولة حلها لأنظمة "المنزل" أو "المكتب". أرخص وأكثر فعالية لشراء المزيد RAM إذا لزم الأمر.

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

160
Mokubai

فقط من أجل الاكتمال: InfiniBand يسمح بالوصول المباشر إلى ذاكرة الأجهزة الأخرى.

ومع ذلك ، فإنه يتطلب:

  • مفتاح InfiniBand
  • تضيف بطاقة InfiniBand على كل جهاز
  • يجب برمجة التطبيق خصيصًا لاستخدام هذا

لا يعمل عبر شبكة موجودة ، بل يتطلب بنية تحتية مستقلة تمامًا لجميع العقد المتصلة. كما أنها لا تعمل عبر الإنترنت

73
Gerald Schneider
Is there any alternative solution?

هذا يعتمد بشكل كبير على طبيعة البيانات.

يمكنك تشغيل خادمي mysql مختلفين على جهازين مختلفين.

ثم قسّم البيانات على 1/2 واكتب البرنامج لتعرف تلقائيًا الخادم الذي يجب الانتقال إليه.

بالطبع يمكن تغيير حجمه إلى أي عدد من الخوادم إذا توفر لديك.

18
cybernard

نعم ، من السهل القيام بذلك (وقد قمت بذلك ، بالنسبة للأنظمة الخالية من الأقراص التي تحتاج إلى مبادلة) ، باستخدام بروتوكول Network Block Device.

قم بتثبيت nbd-server على جهاز الخادم ، وقم بتكوينه لإنشاء ملفات لكل مضيف تلقائيًا.

تأكد من أن الأجهزة العميلة لديها NBD مترجمة إلى نواةها ، ثم قم بتكوينها للتبديل إلى جهاز مثبت على NBD. يمكن أن تساعد الحزمة nbd-client.

آسف إذا كان ما ورد أعلاه غامض بعض الشيء - لا يمكن الوصول إلى الأجهزة التي قمت بها على هذا من هنا ؛ قد أكون قادرًا على ملء التفاصيل عندما أتمكن من الوصول إليها.

هناك بديل NBD تطبيق خادم يسمى nbdkit؛ أنا لا أعرف أي شيء عن ذلك.

15
Toby Speight

نظرًا للتفاصيل الصغيرة غير المهمة "Windows 10 ، تحتوي محطة العمل على 8G B RAM" ، هناك حقًا إجابة عاقلة واحدة فقط: شراء المزيد RAM وتشغيل أقل حماقة.

سيكون شراء SSD ووضع ملف الصفحة هناك هو الخيار الأفضل التالي ، ولكن في الحقيقة ... شراء المزيد من ذاكرة الوصول العشوائي.

إن تقديم ملف الصفحة ("مشاركة الذاكرة") عبر الشبكة أمر ممكن بالطبع ، لكنه فكرة سيئة للغاية. رغم أنه توجد حالات حدودية يكون فيها وقت الوصول عبر الشبكة أفضل من الوصول إلى محرك أقراص محلي ، إلا أنه غير مناسب لحالة الاستخدام الخاصة بك ، لأنك تحتاج إلى {ثابت وقت وصول منخفض و مرتفع عرض النطاق الترددي في نفس الوقت. تذكر أنك لا تتوقع حدوث خطأ في صفحة أو صفحتين ، فأنت تتبادل باستمرار. ما لم تكن على استعداد لدفع عدة آلاف ، فلن تكون هناك طريقة تقترب من شراء RAM أو SSD.

لا يكفي 8 غيغابايت لتشغيل Windows 10 و تطبيق متعطش للذاكرة في نفس الوقت. بالكاد يكفي لتشغيل Word و Excel و Outlook في نفس الوقت. هذا هو بالضبط النموذج غير القابل للاستعمال تمامًا {"إجمالي إعدادات الشركات الهائجة"الذي يتعين على ملايين الأشخاص العيش معه يوميًا على أجهزة الكمبيوتر المحمولة الخاصة بالعمل. استثمر ما بين 100 و 200 عملة في وحدة ذاكرة أخرى ، وأطفأ تكلفتها في غضون أسبوع (الأشياء التي استغرقت دقائق تستغرق الآن ثوانٍ ، والوقت من المال - لسوء الحظ ، يصعب في كثير من الأحيان الوصول إلى رأس عداد الفاصولياء المحلي).

بدلاً من ذلك ، إذا كنت تملك الجهاز ، فيمكنك استخدام NTLite لخفض حماقة Windows 10 ، مما يقلل من حجم الذاكرة. أو ، يمكنك إيقاف 80٪ من الخدمات غير الضرورية في الغالب. يبدو الأمر غير معقول ، لكن {ممكن) لتشغيل إصدار حديث من Windows مع أقل من 2 جيجابايت من RAM المستخدمة.

ولكن في الحقيقة ، {فقط اشتر RAM ... إنها أسرع وأسهل كثيرًا من قضاء ساعات من وقتك الثمين في خفض حماقة Windows.

9
Damon

خيار آخر هو نشر التطبيق مؤقتًا في بيئة يمكن فيها رفع حجم ذاكرة الوصول العشوائي لأعلى أو لأسفل بسهولة.

كنت أنظر إلى مثيل Amazon AWS ، والذي يمكن تغييره في الحجم مع إعادة تشغيل واحدة.

على سبيل المثال ، يوجد مثيل صغير مثل C5.large به ذاكرة الوصول العشوائي سعة 4 جيجا بايت و 2 نواة ، ويكلف 2.04 دولارًا أمريكيًا في اليوم لنظام التشغيل Linux ، أو 4.26 دولارًا أمريكيًا يوميًا لتثبيت Windows. مساحة القرص EBS هي تكلفة إضافية ومقاييس خطية مع تخصيص جيجابايت.

يمكنك إعداد النظام الخاص بك بهذا الحجم الأصغر ، ثم عندما ترغب في تشغيل ضوضاء كاملة ، قم بإيقافه وتغيير حجم المثيل وتشغيل البرنامج.

  • m5.4xlarge هو 64 غيغابايت من ذاكرة الوصول العشوائي و 16 النوى ، بمبلغ 18.44 دولار في اليوم أو 36.10 دولار في اليوم للنوافذ.
  • r4.8xlarge هو 244 غيغابايت و 32 النوى ، مقابل 51.07 دولار في اليوم أو 86.40 دولار في اليوم مع النوافذ.
  • x1.32xlarge هو 1952 غيغابايت و 128 نواة ، مقابل 320.12 دولار أمريكي في اليوم أو 461.43 دولار في اليوم مع نوافذ

أو أكبر واحد ...

  • x1e.32xlarge هو 3904 غيغابايت و 128 نواة ، مقابل 640.52 دولار أمريكي في اليوم أو 781.82 دولار في اليوم مع نوافذ. إذا احتاج زميلك إلى أكثر من هذا ، فستحتاج المشكلة إلى إعادة الكتابة بطريقة أكثر مثالية.

https://www.ec2inaterial.info/ سوف تساعدك على اختيار حجم مناسب. لاحظ أن بعض المواقع تكلف أكثر من غيرها. سنغافورة وشمال كاليفورنيا غالية الثمن. ومع ذلك ، فإن VM لا تكلفك شيئًا عند عدم تشغيله ، بخلاف تكاليف تخزين القرص.

الجانب السلبي هو أنه إذا كنت بحاجة إلى هذه الذاكرة لفترة طويلة ، فإن شراء الوقت VM يعد وسيلة مكلفة للقيام بذلك. ومع ذلك يبدو أن المحاسبين يفضلون أحيانًا التكاليف التشغيلية مثل الإيجار ، والتكاليف الرأسمالية مثل الترقيات.

6
Criggie

سيكون البديل البسيط هو تشغيل التطبيق على الكمبيوتر البعيد ، ربما من خلال حساب مستخدم مخصص ، والتحكم فيه ببساطة عبر RDP أو VNC أو أي شيء مناسب.

6
rackandboneman

اطلب من IT شراء المزيد RAM لجهاز الكمبيوتر الخاص بك ، وإثبات الحاجة باستخدام لقطة شاشة لاستخدام التطبيق في Task Manager.

4
Christopher Hostage

كما قال آخرون إنه من الممكن تقنيًا ولكن لا يستحق كل هذا العناء.

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

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

المثال الذي يدور في ذهني هو خادم يقوم باختبار الشفرة في كل مرة أقوم فيها بدفع أحد التعديلات. الفكرة في مثل هذا الحل هي أنها تقتصر على حالات استخدام محددة.

4
everyone

يوجد حل تجاري لهذا الغرض ، عبر شركة تدعى Kove ( http://kove.net/ ). يتطلب وجود بنية تحتية Infiniband للعمل على "لوحة الكترونية معززة" (تعمل الإيثرنت بشكل طبيعي) ، على الرغم من إمكانية إتاحة خيارات أخرى مثل RoCE ، اعتمادًا على التفاصيل. وهي توفر عددًا من الواجهات الشفافة للسماح بتكامل تغيير الشفرة الصفرية ، واجهات برمجة التطبيقات (APIs) لتجاوز النواة من خلال وصول مباشر أكثر إلى وحدة المعالجة المركزية (أي تجنب حمل النواة). من حيث الأداء ، فإنه يعتمد على التطبيق الخاص بك. إذا كنت مقيدًا بوحدة المعالجة المركزية ، فقد يكون التأثير ضئيلًا (مما قد يكون مفاجئًا) إذا تم تقييد عرض النطاق الترددي للذاكرة على المضيف المحلي ، فسوف يوفر لك ذاكرة أكبر ، لكنك ستخنق عنق الزجاجة الموجود بالفعل. في هذه الحالة ، هل من المفيد أن يكون لحجم العمل ذاكرة أكبر مما يمكن وضعها في صندوق ولا ينفد من ذاكرة الوصول العشوائي؟ لقد رأينا (جيدًا) نتائج جيدة مع المحاكاة الافتراضية ومكتبات تعلم آلة البيثون. تميل تطبيقات HPC الراقية إلى الأسوأ ، لكننا استخدمنا واجهات برمجة تطبيقات C وتمكنا من الحفاظ على الأداء مقبولاً مع تقليل عدد العقيدات (كانت العقد موجودة لذاكرة الوصول العشوائي ، وليس دورات وحدة المعالجة المركزية) ، وهي علامة زائد بالمقارنة مع MPI . من الصعب تحديد ما إذا كان هذا حلاً جيدًا لزميلك ، لكنه خيار يمكنك أن تبحث فيه. امل ان يساعد. لكي أكون واضحا ، أنا لا أعمل لدى Kove ، وليس لدي أي حافز مالي ، لكنني تعاونت معهم لعدة سنوات وأعتقد أن هذه التكنولوجيا لديها القدرة على التأثير بشكل كبير على طريقة إجراء بعض الحوسبة.

3
Bill

وجهة نظر أخرى - ربما لا تتمثل المشكلة في الحد من موارد النظام ، ولكن التطبيق المهدر الذي يكتبه صديقك. 6 غيغابايت من RAM هي ذاكرة هائلة.

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

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

2
Matija Nalis

إذن طلب المستخدم HOW لمشاركة الذاكرة عبر الشبكة. ليس إذا كانت فكرة جيدة. حتى هنا هو في الواقع كيف يمكنك أن تفعل ذلك.

أنا لا أقول أن هذه فكرة جيدة ، أو ستكون أداءً جيدًا ، لكنها (should) تعمل.

  • الكمبيوتر 1 = "الرئيسي" - حيث يتم تنفيذ التعليمات البرمجية
  • الكمبيوتر 2 = "الطفل" - متبرع بالذاكرة

أفترض أن هذا ليس Windows Server حيث يمكنك إنشاء نقطة تحميل iSCSI.

الكمبيوتر 1 خطوات:

  1. قم بتنزيل ramdisk المجاني من Dataram: http://memory.dataram.com/products-and-services/software/ramdisk
  2. إنشاء ramdisk وتنسيقه مع NTFS - تتوفر تعليمات على موقعهم
  3. ضمن Disk Manager ، قم بإنشاء ملف VHD على ramdisk المهيأة باستخدام NTFS
  4. شارك دليل جذر Ramdisk عبر الشبكة مع SMB - انقر بزر الماوس الأيمن على محرك الأقراص ، وقم بمشاركة ، مشاركة هذا المجلد

خطوات الكمبيوتر 2:

  1. قم بتعيين محرك الأقراص المشترك من cild على محرك أقراص
  2. تحميل VHD الذي قمت بإنشائه في الخطوة 3 أعلاه في إدارة الأقراص
  3. انقل موقع ملف الصفحة المحلي إلى VHD المثبت عبر انقل ملف صفحة Windows
  4. إزالة أي إدخالات ملف صفحة أخرى.

فعله!

محاذير - قد تتمكن من تخطي هراء VHD إذا كان Windows يتيح لك نقل ملف الصفحة إلى مشاركة الشبكة. ليس هناك العديد من الأمثلة على هذا عبر الإنترنت (لأسباب واضحة).

قد يحدث عدم استقرار كامل للنظام أو أي شيء آخر تمامًا. لا أحد يعرف حقيقة ما سيحدث.

1
Brennen Smith

كما ذكرت "ذاكرة الوصول العشوائي" للمشاركة عبر الشبكة وليس فقط "الذاكرة" من أي نوع ، فإن الجواب النهائي سيكون نظريا نعم ، عمليا لا.

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

يتم استخدام RAM أو ذاكرة الوصول العشوائي بواسطة نظام التشغيل كمساحة عمل بحيث يتم إجراء الكثير من عمليات القراءة/الكتابة عليه. في نظام متوسط ​​، تكون سرعة سرعة البيانات مع RAM أعلى مقارنة بالأجزاء الأخرى. إذا وضعت RAM على إحدى الشبكات ، فستحتاج إلى أن تكون لديك سعة عالية جدًا لنقل البيانات وستكون التكلفة عالية جدًا حتى لو كان ذلك ممكنًا لتحقيق ذلك تقنيًا. مع جزء ضئيل من تكلفة ترقية سرعة الشبكة ، ستحصل على RAM لجهازك محليًا.

0
A. Bauani

هذا يعتمد حقًا على نوع التطبيق الذي عليه وعلى ما يتم استخدام ذاكرة الوصول العشوائي.

على سبيل المثال ، يمكن أن تستخدم العديد من تطبيقات الويب RAM عبر الشبكة عن طريق الاتصال بخادم memcached. سيسمح هذا بتخزين بيانات ذاكرة التخزين المؤقت (والبيانات الأخرى التي يجب أن تكون سريعة الوصول) على كمبيوتر آخر به الكثير من ذاكرة الوصول العشوائي.

بالطبع هذا تطبيق محدد ويحتاج إلى تطبيق يمكنه استخدام memcached. هذا لن يساعدك على فتح مثيل ثانٍ من الركود حيث أن المتصفح لا يدعم استخدام واجهة ذاكرة التخزين المؤقت هذه.

0
allo

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

لذلك ، هناك بعض الاحتمالات هنا:

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

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

0
Zenilogix