روش مقرون به صرفه برای ساخت سرور با رم زیاد

ساخت وبلاگ

قفل شدهاین سؤال و پاسخ های آن قفل شده است زیرا سوال خارج از موضوع است اما از اهمیت تاریخی برخوردار است. در حال حاضر پاسخ ها یا تعامل های جدید را نمی پذیرد.

من یک برنامه جاوا دارم که در آن مقیاس پذیری در درجه اول توسط RAM محدود است ، که می خواهم روی یک یا چند سرور در یک دیتاسنتر اجرا کنم. از کجا باید به دنبال سخت افزار سرور باشم که بتواند 100 گیگابایت - 512 گیگابایت یا بیشتر رم را در خود جای دهد؟من در چنین مواردی متخصص نیستم ، بنابراین واقعاً نمی دانم از کجا شروع کنم.

آیا این وارد قلمرو ابر رایانه ای (6 شکل یا بیشتر) است ، یا می توانم چنین سرور را با دلار 5 رقمی پایین بدست آورم؟

چند یادداشت بر اساس برخی از سؤالات زیر:

  • بله ، من تلاش زیادی کردم که به روش هایی برای رفع این نیاز مقیاس پذیری فکر کنم ، و واقعاً گزینه ای نیست. این برنامه اساساً نیاز به دسترسی تصادفی بسیار سریع به مقادیر بسیار زیادی از داده ها دارد ، ذخیره در یک دیسک سخت (از طریق یک پایگاه داده شاید) آن را کاهش نمی دهد.
  • من کاملاً مطمئن هستم که JVM ، حداقل در تئوری ، می تواند از این حد دور شود. من به طور مرتب کد خود را با 10 گیگابایتی اختصاص داده شده به Sun 1. 6 JVM بدون مشکل قابل توجه اجرا می کنم.

18 پاسخ 18

نیاز غیرمعمول گاهی اوقات از راه حل های غیرمعمول بهره می برد. مطمئناً می توانید 6 شکل به Sun ، Dell یا HP بدهید و با آن انجام شود ، اما این تنها بازی در شهر نیست.

برای راه حل های تک جعبه ، رسیدن به 128 گیگابایت بسیار ارزان است (32 x 4 گیگابایت~3. 000 دلار) ، حتی با مادربردهای خانگی که کمتر از 1. 000 دلار هزینه دارند.(سازندگان را مسخره نکنید. اگر به اندازه کافی برای Google است.)

256 گیگابایت به طور جدی گرانتر است (32x8 گیگابایت~18. 000 دلار) ، و فراتر از آن.

از طرف دیگر ، این Infiniband (10 گیگابایت در ثانیه) را به هم پیوسته است که به عنوان یک گزینه جایگزین به هم پیوسته است؟

شما می توانید یک دستگاه 4 گره ، 16 پردازنده (64 هسته) ، 512 گیگابایتی را به این روش بسازید و هنوز از 25. 000 دلار تغییر کرده است.

علاوه بر این ، شما می توانید مزایای اضافی تخریب براق را داشته باشید ، اگر برنامه شما در صورت عدم موفقیت می تواند روی 3 دستگاه کار کند ، و احتمالاً یک مقیاس خطی را با هزینه تا 8 گره بدست آورید (فقط 4 گره دیگر اضافه کنید). در آن مرحله شما در حال جستجوی یک Beast Core Core Core 128 ، 1tb RAM Beast هستید

قبل از اینکه پیشنهاد Infiniband را به عنوان عجیب و غریب رد کنید ، این نوع دستگاهی نیست که درخواست می کنید. به عنوان مثال،141 از 500 ابر رایانه برتر به این روش ساخته شده است ، از جمله 4 مورد از 10 نفر برتر (http://top500.org/cofam/8)

من نمی دانم که اینفینیبند راه حل مناسبی است (من هیچ تجربه ای با آن ندارم) ، اما (در سال 2011) من یک سیستم را که در حال اجرا جاوا با 100 گیگابایت+ رم در یک سرور واحد است ، می خوانم. وقت آن است که راه حل های عجیب و غریب را در نظر بگیریم.

-1 برای واقعاً ، واقعاً گمراه کننده است. بسیاری از ابر رایانه های موجود در TOP500 از Infiniband برای ارائه شبکه های کم تأخیر استفاده می کنند ، نه اینکه یک تصویر منسجم را از طریق RDMA ارائه دهند-این استفاده واقعاً عجیب است. برای استفاده از آن ، باید از یک تصویر تک سیستم یا محصول VSMP استفاده کنید. در حالی که می توانید برای این کار از چیزی مانند Kerrighed یا OpenSSI استفاده کنید ، این پیشنهادات مبتنی بر هسته های اصلاح شده است و نمی توانند یک تصویر فرآیند واحد را در گره ها تقسیم کنند. فقط Scalemp ، که یک راه حل بسیار گران است ، می تواند یک تصویر سیستم منسجم واقعی را در چندین سرور متصل به RDMA ارائه دهد.

خوب ، نگاه کنشما نمی خواهید سرور را پیدا کنید که نوع ردپای RAM را که به دنبال آن هستید ، پیدا کنید ، حداقل کسی که به شبکه الکتریکی خود احتیاج ندارد.

چرا یک رویکرد مقیاس پذیر انجام نمی شود و از memcached استفاده می کنید؟می توانید حافظه را در دستگاه های مختلف در سراسر شبکه پخش کنید. داده ها هرگز مجبور به لمس یک درایو دیسک نیستند و با نوع شبکه فوق العاده سریع می توانید با پولی که در مورد آن صحبت می کنید خریداری کنید ، تأخیر به هیچ وجه به هیچ وجه مشکلی نخواهد بود.

و در اینجا مقدمه ای برای Memcached وجود دارد در صورتی که آشنا نیستید: http://www. danga.com/memcached/

داخلش رو نگاه کن. این کار از ساخت یک دستگاه هیولای منفرد با یک قوچ مجنون مقرون به صرفه تر خواهد بود. علاوه بر این ، اگر کاری را انجام می دهید که آن نوع نیاز را داشته باشد ، احتمالاً ماموریت بسیار مهم است ، و به یک نقطه شکست نیاز ندارید.

این مزخرف استSandy Bridge که هفته گذشته در یک قسمت سرور راه اندازی شد ، می تواند تا 768 گیگابایت در بسته سرور 1U مقیاس کند. اگر به دنبال چسبیدن به قطعات Westmere هستید ، می توانید دو سرور IBM X3850 یا مشابه را از طریق پیوندهای QPI به هم وصل کنید و آنها را با کمتر از 4000 وات برق دهید.(این همان ردپای قدرت به عنوان چهار سرور 2U در همان فضای قفسه است.) احتمالاً AMD در این فضا نیز پیشنهادات رقابتی دارد.

سرورهای Opteron 4 یا 8 سوکتی مانند HP DL585 یا DL785 یا Sun X4600 می توانند حجم زیادی از حافظه را در محدوده 128-256 گیگابایت اشغال کنند. اگرچه ارزان نیستند، اما مطمئناً در برچسب های قیمت 6 رقمی نیستند. یک Sun X4600 32 هسته ای 8 جهته با 256 گیگابایت رم قیمتی در حدود 35000 دلار در وب سایت خود دارد و این قیمت تقریباً به اندازه این نوع سیستم است. احتمالاً متوجه خواهید شد که می توانید سیستم را با قیمتی کمتر از لیست قیمت نشان داده شده در وب سایت دریافت کنید.

اگرچه DIMM های 4 گیگابایتی در دسترس هستند، اما تمایل دارند که قیمت بالایی داشته باشند، بنابراین استفاده از سیستمی که حداکثر با آن ها باشد، بسیار گران تر خواهد بود.

اگر می خواهید از این نوع سیستم استفاده کنید، به یک O/S 64 بیتی نیاز دارید. مطمئن شوید که یک JVM 64 بیتی نیز دریافت کرده اید و بررسی کنید که با برنامه شما به خوبی کار می کند.

من پیشنهادات سخت افزاری را تکرار نمی کنم (که سالم هستند) اما ممکن است بخواهید به Terracotta نگاه کنید تا ببینید آیا برای برنامه شما مناسب است یا خیر.

کاملاً مراقب اندازه رم چنین باشید. ما یک دستگاه HP را به 64 گیگابایت افزایش داده بودیم (HP اظهار داشت که دستگاه می تواند 128 گیگابایت را تحمل کند)، اما فقط پس از اضافه کردن یک برد افزایش دهنده اضافی، یک شفت خنک کننده و غیره (پس از گپ زدن زیاد با HP). فقط به این دلیل که یک دستگاه مشخص شده است تا n گیگابایت را اشغال کند، به این معنی نیست که بدون تغییرات اضافی کار خواهد کرد. در مورد ما، همه ماژول های حافظه معمولی کار نمی کردند، زیرا آنها داغ شدند، فقط ماژول های بسیار خاص کار می کردند.

هزینه RAM به صورت خطی به اندازه های بزرگ تقسیم نمی شود. فقط به این دلیل که می توانم یک DIMM 1 گیگابایتی را با قیمت 15 دلار بخرم به این معنی نیست که می توانم یک سرور با 128 گیگابایت تنها با 1920 دلار تهیه کنم. برای شروع، مادربردی با 128 اسلات DIMM در آن پیدا نخواهید کرد.

بالاتر از اندازه معین (~8 تا 16 گیگابایت) شما شروع به دیدن مادربردهایی می کنید که به DIMMهای بافر کامل (FB-DIMM) نیاز دارند، که هزینه آن به ازای هر گیگابایت بسیار بیشتر از حافظه دسکتاپ استاندارد است.

ما مرتباً از ماشین هایی با حافظه 128 گیگابایتی استفاده می کنیم و قیمت آنها در سال های اخیر بسیار کاهش یافته است، اما من هیچ عدد فعلی ندارم. و نه هیچ تجربه ای در مورد اینکه JVM چقدر به آن اندازه حافظه مقیاس می شود.

شما در واقع گزینه های زیادی دارید، فقط از لیست HP شما تیغه BL680c آنها را دارید که می تواند 128 گیگابایت، DL580/585 آنها می تواند 256 گیگابایت و DL785 آنها می تواند 512 گیگابایت داشته باشد. برخی از IBM تا 256 گیگابایت افزایش می یابند، همانطور که یکی از Dell نیز این کار را انجام می دهد.

من فکر می کنم شما با استفاده از سخت افزار سنتی ، با 64 گیگابایت در شماره 64 گیگابایت شروع خواهید کرد. اگر بتوانید از آنجا مقیاس بندی کنید ، خوب خواهید بود اما حدس من این است که راه حل بسیار مقرون به صرفه تر این است که معماری شما را زیر سوال ببرید. اعطا می کنم که می گویم بدون آگاهی از آنچه شما انجام می دهید اما من فقط آن را به آنجا می اندازم.

متأسفانه هیچ راهی آسان برای دستیابی به نیاز RAM وجود ندارد ، زیرا برنامه نیاز به دسترسی تصادفی بسیار سریع به مقادیر زیادی از داده ها دارد - ذخیره کردن داده ها روی دیسک فقط آن را کاهش نمی دهد :-(

آیا راه حل EC2 آمازون برای شما مناسب خواهد بود؟مطمئناً مقرون به صرفه ترین راه حل خواهد بود.

نمی ترسید - حداکثر مقدار RAM یک سرور EC2 می تواند 14 گیگابایت باشد ، آخرین باری که به هر حال بررسی کردم.

بیایید بگوییم که شما می توانید آن حافظه زیادی را در یک سرور قرار دهید (اگر اشتباه نکنم ، لینوکس روی سخت افزار استاندارد محدود به 64 گیگابایت است ، اما من مطمئن نیستم).

در بیشتر سیستم عامل ها ، JVM به فضای پشته ای در حدود 1. 4 گیگابایت 1. 6 گیگابایت محدود می شود ، تا حدودی به این دلیل که حافظه پیوسته مورد نیاز است و تا حدی به دلیل محدودیت های سیستم عامل است.

از این رو ، یک RAM اضافی به شما در مقیاس یک برنامه کمک نمی کند ، فقط به شما امکان می دهد چندین نمونه از برنامه را اجرا کنید. با این حال ، شما به چندین هسته نیاز دارید و به موضوعات مختلف دیگری می پردازید.

به آن قوچ خیلی احتیاج دارید؟ممکن است بتوانید پایگاه داده هایی را پیدا کنید که بتوانند در حافظه ذخیره شوند یا از RAM درایو استفاده کنند ، اما من از JVM آگاهی ندارم که به شما امکان می دهد آن چیزهای زیادی را در حافظه ذخیره کنید.

من کاملاً مطمئن هستم که JVM محدود به فضای پشته 1. 6 گیگابایتی نیست ، من مرتباً آن را با 10 گیگابایت و بیشتر با JVM Sun اجرا می کنم ، البته باید در یک دستگاه 64 بیتی باشد.

من مخالفممشاهده کنید: unixville.com/~Moazam و چندین سوال در اینجامن در مورد JVM های 64 بیتی ، AFAIK که در این زمان در MAC 64bit My پشتیبانی نمی شود ، مطمئن نیستم ، از 64 بیتی لینوکس / برنده نمی دانم.

من از JVM 64bit استفاده می کنم ، در واقع ، من از یکی در مک استفاده می کنم. اپل چندی پیش Java 1. 6 را برای 64bit Macs منتشر کرد.

من نمی دانم ، زیرا Eclipse برای من 1. 6 اجرا نمی شود. اما خوب ، من آن را قبول دارم. حداکثر قوچ که می توانید روی دستگاه خود قرار دهید چیست؟

یک روش معمولی برای به دست آوردن حافظه سیستم بیشتر ، به دست آوردن سیستم های بیشتر است. اگر حافظه واقعاً تنگنا است ، پس حافظه شما چقدر نیست ، اما داده های شما چقدر به پردازنده های شما متصل است. برای انجام این کار بسیار خوب باید چیزهای زیادی را مقیاس کنید.

برای روشن شدن ، فقط اضافه کردن یک زن و شوهر صفر به حافظه سیستم شما احتمالاً قصد انجام آنچه را که فکر می کنید انجام نمی دهد. آنچه پیدا خواهید کرد این است که اکنون که کل مجموعه داده های شما در حافظه قرار می گیرد ، یا حتی یک قطعه کمی بزرگتر از آن ، به برخی از تنگناها مانند عدم اعتبار حافظه پنهان می پردازید.

روش مناسب برای مقیاس سیستم شما به آرامی است. اگر در حال حاضر در حال اجرا هستید ، مثلاً در یک سیستم 4 هسته ای با 8 گیگابایت رم ، اولین بار جهنم را از برنامه خود مشخص کنید تا ببینید که واقعاً زمان آن را صرف می کند ، سپس سعی کنید تا 12 یا 16 گیگ رم را بزنید و ببینید چگونهنتایج پروفایل تغییر کرده است.

سوال واقعی این است که چرا شما به حدود 100 برابر حافظه سیستم نسبت به سایر منابع نیاز دارید تا آنچه که معمولاً در دسترس است. اگر الگوی دسترسی به داده های شما به نوعی قابل پیش بینی باشد ، کاری که شما باید انجام دهید افزایش پهنای باند دیسک است ، چندین کنترلر RAID با چندین دیسک راه راه به این هدف دست می یابند.

اگر الگوی دسترسی به داده های شما واقعاً تصادفی است ، احتمالاً جایی برای یک الگوریتم بهینه شده بهتر وجود دارد.

استراتژی های مؤثر فارکس...
ما را در سایت استراتژی های مؤثر فارکس دنبال می کنید

برچسب : نویسنده : توران میرهادی بازدید : <-PostHit-> تاريخ : شنبه 26 فروردين 1402 ساعت: 12:49