Rekan saya menggunakan aplikasi yang menghabiskan banyak memori yang membuat sistem terlalu lambat. Apakah mungkin untuk berbagi memori dengan PC lain melalui Internet?
Sistem ini memiliki 8 GB RAM, dan aplikasi mengkonsumsi lebih dari 6 GB.
Rekan saya menggunakan aplikasi yang menghabiskan banyak memori yang membuat sistem terlalu lambat. Apakah mungkin untuk berbagi memori dengan PC lain melalui Internet?
Sistem ini memiliki 8 GB RAM, dan aplikasi mengkonsumsi lebih dari 6 GB.
Jawaban:
Saya hanya menganggap aplikasi mandiri yang berjalan pada mesin "standar" tanpa kemampuan untuk menginstalnya di tempat lain atau menggunakan perangkat keras atau perangkat lunak khusus. Jawaban lain (dengan benar) menangani migrasi perangkat lunak atau perangkat keras khusus untuk tugas tersebut.
Cara apa pun untuk "berbagi RAM" melalui jaringan akan tunduk pada batasan media jaringan itu. Karena gigabit Ethernet terbatas hingga sekitar 100MB / s (megabita) ini berarti kecepatan "RAM" Anda juga akan terbatas.
100MB / s adalah sebagian kecil dari kecepatan RAM yang sebenarnya ada di sistem Anda. Program Anda akan sangat lambat dan terasa seperti sedang berjalan di komputer sejak awal 90-an
Hard drive modern, untuk membaca dan menulis berurutan, sedikit lebih cepat dari ini. SSD beberapa kali lebih cepat.
Ini mengabaikan masalah latensi yang akan membuat program Anda urutan besarnya lebih lambat lagi.
Karena kelambatan dan masalah teknis lainnya yang terlibat, ini bukan masalah yang pernah dianggap layak untuk dicoba diselesaikan oleh sistem "rumah" atau "kantor". Lebih murah dan lebih efektif untuk membeli lebih banyak RAM jika diperlukan.
Beli saja lebih banyak RAM, atau bahkan SSD untuk file halaman. Tidak ada cara lain untuk melakukan ini yang tidak memerlukan jumlah pekerjaan atau perangkat keras yang gila untuk keuntungan kecil.
Hanya untuk kelengkapan: InfiniBand memungkinkan akses langsung ke memori mesin lain.
Namun, itu membutuhkan:
Ini TIDAK bekerja melalui jaringan yang ada, itu membutuhkan infrastruktur yang sepenuhnya independen untuk semua node yang terhubung. Ini juga TIDAK berfungsi melalui Internet
Is there any alternative solution?
Ini sangat tergantung pada sifat data.
Anda dapat menjalankan 2 server mysql berbeda di 2 mesin yang berbeda.
Kemudian bagi data menjadi 1/2 dan tulis program untuk secara otomatis mengetahui ke server mana.
Tentu saja ini dapat ditingkatkan ke sejumlah server jika Anda memilikinya.
Ya, ini cukup mudah dilakukan (dan saya sudah melakukan ini, untuk sistem tanpa disk yang memerlukan swap), menggunakan protokol Network Block Device.
Instal nbd-server
di mesin server, dan konfigurasikan untuk membuat file secara otomatis per-host.
Pastikan mesin klien Anda memiliki NBD dikompilasi ke dalam kernel mereka, dan kemudian konfigurasikan untuk bertukar ke perangkat yang dipasang NBD. The nbd-client
paket dapat membantu.
Maaf jika hal di atas sedikit kabur - Mesin yang saya lakukan ini tidak dapat dijangkau dari sini; Saya mungkin bisa mengisi detail ketika saya memiliki akses ke mereka.
Ada implementasi server NBD alternatif yang disebut nbdkit
; Saya tidak tahu apa-apa tentang itu.
Mengingat detail kecil, tidak penting "Windows 10, workstation memiliki 8G B RAM" , hanya ada satu jawaban yang masuk akal: Beli lebih banyak RAM dan jalankan lebih sedikit omong kosong.
Membeli SSD dan meletakkan file halaman akan menjadi pilihan terbaik berikutnya, tetapi sungguh-sungguh ... beli lebih banyak RAM.
Melayani file halaman ("berbagi memori") melalui jaringan tentu saja mungkin, tetapi itu adalah ide yang sangat buruk. Meskipun memang benar bahwa ada kasus batas di mana waktu akses melalui jaringan akan lebih baik daripada mengakses drive lokal, itu tidak relevan untuk kasus penggunaan Anda, karena Anda memerlukan waktu akses yang rendah dan bandwidth tinggi secara konsisten . Ingat, Anda tidak mengantisipasi kesalahan satu atau dua halaman, Anda terus bertukar. Kecuali Anda bersedia membayar beberapa ribu, tidak ada cara Anda akan mendekati membeli RAM atau SSD.
8 GB hampir tidak cukup untuk menjalankan Windows 10 dan aplikasi yang haus memori secara bersamaan. Ini hampir tidak cukup untuk menjalankan Word, Excel dan Outlook secara bersamaan. Persis seperti "pengaturan perusahaan total omong kosong" yang benar-benar tidak dapat digunakan yang mana jutaan orang harus hidup dengan setiap hari di laptop kerja mereka. Investasikan 100-200 mata uang dalam modul memori lain, dan akan diamortisasi biayanya dalam seminggu (hal-hal yang membutuhkan waktu beberapa menit sekarang menjadi detik, dan waktu adalah uang - sayangnya ini sering sulit untuk masuk ke kepala penghitung kacang lokal Anda).
Atau, jika Anda memiliki mesin, Anda dapat menggunakan NTLite untuk mengurangi omong kosong Windows 10, mengurangi jejak memorinya. Atau, Anda mungkin mematikan 80% dari layanan yang sebagian besar tidak perlu. Tampaknya tidak bisa dipercaya, tetapi dimungkinkan untuk menjalankan versi Windows terbaru dengan RAM di bawah 2 GB yang digunakan.
Tapi sungguh, beli saja RAM ... ini jauh lebih cepat dan lebih mudah daripada menghabiskan berjam-jam waktu berharga Anda untuk mengurangi omong kosong Windows.
Alternatif sederhana adalah menjalankan aplikasi pada PC jarak jauh , mungkin di bawah akun pengguna khusus, dan cukup mengontrolnya melalui RDP, VNC atau apa pun yang nyaman.
Pilihan lain adalah untuk sementara menyebarkan aplikasi di lingkungan di mana ram dapat ditingkatkan dengan mudah atau turun.
Saya akan melihat contoh Amazon AWS, yang dapat diubah ukurannya dengan satu reboot.
IE contoh kecil seperti C5.large memiliki ram 4GB dan 2 core, dan biaya $ 2,04 USD per hari untuk linux, atau $ 4,26 USD per hari untuk instalasi windows. Ruang disk EBS adalah biaya tambahan dan timbangan linear dengan GB dialokasikan.
Anda dapat mengatur sistem Anda dalam ukuran yang lebih kecil ini, dan kemudian ketika Anda ingin kebisingan penuh, hentikan, ubah ukuran instance, dan jalankan perangkat lunak.
Atau yang terbesar ...
https://www.ec2instances.info/ akan membantu Anda memilih ukuran yang sesuai. Perhatikan bahwa beberapa lokasi harganya lebih mahal daripada yang lain. Singapura dan California Utara mahal. Namun VM Anda tidak ada biaya ketika tidak berjalan, selain biaya penyimpanan disk.
Kelemahannya adalah jika Anda membutuhkan memori ini untuk waktu yang lama, membeli waktu VM adalah cara yang mahal untuk melakukannya. Namun akuntan tampaknya kadang-kadang lebih suka biaya operasional seperti sewa, ke biaya modal seperti peningkatan.
Seperti yang orang lain katakan itu secara teknis mungkin tetapi tidak sepadan.
Namun jika Anda ingin mempercepat penggunaan komputer Anda, dimungkinkan untuk mengeksternalisasi beberapa aplikasi Anda ke server jauh.
Ini sebagian besar akan tergantung pada apa yang sedang Anda kerjakan dan aplikasi apa yang Anda gunakan. Jika Anda menjalankan program yang membutuhkan banyak waktu pemrosesan untuk output data kecil, Anda bisa membuatnya berjalan di server yang berbeda dari komputer Anda untuk menghemat waktu dan sumber daya saat Anda mengerjakan sesuatu yang lain.
Contoh yang ada dalam pikiran saya adalah server yang menguji kode saya setiap kali saya mendorong modifikasi. Gagasan dengan solusi semacam itu adalah terbatas pada kasus penggunaan khusus.
Minta IT untuk membeli lebih banyak RAM untuk PC Anda, dan perlihatkan perlunya menggunakan tangkapan layar dari penggunaan aplikasi di Task Manager.
Ada solusi komersial untuk ini, melalui perusahaan bernama Kove ( http://kove.net/). Ini membutuhkan infrastruktur Infiniband untuk bekerja pada "backplane" (ethernet bekerja secara normal), meskipun opsi lain seperti RoCE kadang-kadang dapat dibuat tersedia, tergantung pada spesifik. Mereka menyediakan sejumlah antarmuka transparan untuk memungkinkan integrasi perubahan kode nol, dan API untuk pemintas kernel dengan lebih banyak akses CPU langsung (yaitu, menghindari overhead kernel). Dalam hal kinerja, itu tergantung pada aplikasi Anda. Jika Anda terikat CPU, maka dampaknya bisa minimal (yang bisa mengejutkan). Jika Anda bandwidth memori terikat pada host lokal, mereka akan memberi Anda memori yang lebih besar, tetapi Anda akan terkekang oleh bottleneck yang sudah ada. Dalam hal ini, apakah menguntungkan untuk beban kerja memiliki memori lebih besar daripada yang bisa dimasukkan ke dalam kotak, dan tidak kehabisan RAM? Kami telah melihat (sangat) hasil yang baik dengan perpustakaan virtualisasi dan pembelajaran mesin python. Aplikasi HPC high-end cenderung lebih buruk, tetapi kami telah menggunakan API C dan berhasil menjaga kinerja tetap dapat diterima sambil mengurangi jumlah node (node ada di sana untuk RAM, bukan siklus CPU), yang merupakan nilai tambah dibandingkan dengan MPI . Sulit untuk mengetahui apakah ini solusi yang baik untuk rekan Anda, tetapi ini merupakan opsi yang dapat Anda perhatikan. Semoga itu bisa membantu. Untuk lebih jelasnya, saya tidak bekerja untuk Kove, dan tidak memiliki insentif keuangan, tetapi saya telah berkolaborasi dengan mereka selama beberapa tahun dan berpikir teknologi ini memiliki potensi untuk secara substansial berdampak pada cara komputasi tertentu dilakukan. tetapi kami telah menggunakan API C dan berhasil menjaga kinerja tetap dapat diterima sambil mengurangi jumlah simpul (node ada di sana untuk RAM, bukan siklus CPU), yang merupakan nilai tambah dibandingkan dengan MPI. Sulit untuk mengetahui apakah ini solusi yang baik untuk rekan Anda, tetapi ini merupakan opsi yang dapat Anda perhatikan. Semoga itu bisa membantu. Untuk lebih jelasnya, saya tidak bekerja untuk Kove, dan tidak memiliki insentif keuangan, tetapi saya telah berkolaborasi dengan mereka selama beberapa tahun dan berpikir teknologi ini memiliki potensi untuk secara substansial berdampak pada cara komputasi tertentu dilakukan. tetapi kami telah menggunakan API C dan berhasil menjaga kinerja tetap dapat diterima sambil mengurangi jumlah simpul (node ada di sana untuk RAM, bukan siklus CPU), yang merupakan nilai tambah dibandingkan dengan MPI. Sulit untuk mengetahui apakah ini solusi yang baik untuk rekan Anda, tetapi ini merupakan opsi yang dapat Anda perhatikan. Semoga itu bisa membantu. Untuk lebih jelasnya, saya tidak bekerja untuk Kove, dan tidak memiliki insentif keuangan, tetapi saya telah berkolaborasi dengan mereka selama beberapa tahun dan berpikir teknologi ini memiliki potensi untuk secara substansial berdampak pada cara komputasi tertentu dilakukan.
Sudut pandang lain - mungkin masalahnya bukan terbatas pada sumber daya sistem, tetapi aplikasi boros yang ditulis teman Anda. 6 GB RAM adalah banyak sekali memori.
Hanya karena banyak aplikasi lain terlalu membengkak , tidak berarti aplikasi teman Anda harus salah satunya. Menggunakan metode pemrograman yang berbeda dapat mengurangi kebutuhan memori sambil meningkatkan kecepatan. Sebagai contoh, jika aplikasi memuat seluruh dataset dalam memori dan kemudian bekerja di atasnya akan jauh lebih boros daripada misalnya menyimpan data dalam database SQL (lokal atau jauh) dengan beberapa indeks pilih dan mengaksesnya di sana. Buat itu memproses data blok demi blok jika memungkinkan, alih-alih memuat semuanya sekaligus. Struktur di dalam memori juga bisa boros. Kosongkan memori saat Anda selesai dengan itu. Jangan memasukkan ke dalam RAM apa yang Anda bisa memetakan memori sebagai gantinya. Dan ratusan tips lainnya ...
Namun jika aplikasi benar-benar membutuhkan lebih banyak memori yang perlu disimpan di komputer lain, itu dapat dimodifikasi untuk menggunakan memcached dan sejenisnya untuk menyimpannya di sana. Poin bonus karena akan berskala lebih baik di masa depan.
Jadi pengguna meminta BAGAIMANA untuk berbagi memori melalui jaringan. Tidak jika itu ide yang bagus. Jadi di sini sebenarnya bagaimana Anda bisa melakukannya.
Saya tidak mengatakan ini adalah ide yang baik, atau akan menjadi pemain, tetapi itu harus bekerja.
Saya berasumsi ini bukan Windows Server di mana Anda dapat membuat titik pemasangan iSCSI.
Komputer 1 Langkah:
Komputer 2 langkah:
Selesai!
Peringatan - Anda mungkin dapat melewati omong kosong VHD jika Windows memungkinkan Anda memindahkan file halaman ke jaringan berbagi. Tidak banyak contoh online ini (untuk alasan yang jelas).
Ketidakstabilan sistem yang lengkap dapat terjadi, atau sesuatu yang lain sama sekali. Tidak ada yang benar-benar tahu apa yang akan terjadi.
Seperti yang Anda sebutkan "RAM" untuk berbagi melalui jaringan bukan hanya "memori" dalam bentuk apa pun, jawaban akhirnya akan secara teoritis ya, praktis tidak.
Sementara jenis memori lain seperti penyimpanan dan data sementara lainnya secara teratur dibagikan melalui jaringan untuk berbagai keperluan dan alasan. Dengan cara yang sama RAM secara teknis memungkinkan untuk dibagikan melalui jaringan jika diperlukan. Tetapi kinerja dan biaya akan terlalu tinggi untuk layak di dunia nyata.
RAM atau memori akses acak digunakan oleh sistem operasi sebagai ruang kerja sehingga banyak operasi baca / tulis dilakukan di dalamnya. Pada sistem rata-rata, kapasitas kecepatan data dengan RAM paling tinggi dibandingkan bagian lain. Jika Anda meletakkan RAM di jaringan, Anda harus memiliki kapasitas transfer data kecepatan sangat tinggi dan biaya akan sangat tinggi bahkan jika mungkin untuk mencapai secara teknis. Dengan sebagian kecil biaya untuk peningkatan kecepatan jaringan Anda akan mendapatkan RAM untuk mesin Anda secara lokal.
Aplikasi biasanya berjalan dalam memori virtual, sehingga kebutuhan memori virtualnya dapat melebihi memori fisik yang tersedia dari sistem tanpa konsekuensi selain kinerja. Sistem operasi akan hanya halaman memori virtual ke disk untuk membebaskan memori fisik yang diperlukan di saat tertentu untuk penggunaan aktif. Ini biasanya berfungsi dengan baik untuk aplikasi yang memiliki lokalitas yang wajar (aktivitas pada waktu tertentu agak terfokus pada area terbatas dalam ruang memori virtual aplikasi). Jika aplikasi memiliki lokalitas yang buruk (terus-menerus merujuk memori di seluruh ruang virtualnya), itu akan berkinerja buruk kecuali semua memori virtualnya dapat ditampung dalam memori fisik (semua memori virtualnya adalah penduduk).
Jadi, ada beberapa kemungkinan di sini:
Gagasan untuk menggunakan memori pada komputer jarak jauh pada dasarnya membuat file paging jaringan . Secara teori, ini dapat bekerja, tetapi dalam praktiknya, kinerja akan jauh lebih baik jika file paging bersifat lokal ke komputer (hard drive sendiri) karena bandwidth jaringan dan latensi. Tidak masalah jika sistem jarak jauh meng-hosting file paging dalam memori atau pada disk-nya, hambatan (pembatas kinerja yang paling signifikan) adalah jaringan. Ini akan benar terutama melalui internet, tetapi juga akan benar bahkan jika komputer jarak jauh berdekatan pada LAN yang sama.
Ini benar-benar tergantung pada jenis aplikasi apa itu dan untuk apa ram digunakan.
Misalnya banyak aplikasi web dapat menggunakan RAM melalui jaringan dengan menghubungkan ke memcached
server. Ini akan memungkinkan untuk menyimpan data cache (dan data lain yang harus cepat diakses) di komputer lain dengan banyak RAM.
Tentu saja ini adalah aplikasi khusus dan membutuhkan aplikasi yang dapat menggunakan memcached. Ini tidak akan membantu Anda untuk membuka contoh slack kedua karena browser tidak mendukung penggunaan backend cache.