RAM'i ağ üzerinden paylaş


48

Meslektaşım, sistemi çok yavaş yapan çok fazla bellek tüketen bir uygulama kullanıyor. Belleği İnternet üzerinden diğer bilgisayarlarla paylaşmak mümkün müdür?

Sistem 8 GB RAM'e sahiptir ve uygulama 6 GB'tan daha fazla tüketir.


5
Uzak Masaüstü veya VNC veya X11 ile yüksek güçlü bir sunucuda çalıştırın ??
WGroleau

3
Önceden belirtilen cevaplar gibi, büyük depolama sürücüleri (HDD'ler veya SSD'ler) önbellek olarak kullanmaktan daha iyi olursunuz.
Firebug


79
Daha fazla RAM indirirken daha fazla şansınız olabilir ...
Mehrdad

4
Pencerelerin modern versiyonları performansı arttırmak için USB çubukları veya SD kartları kullanmanızı sağlar. Bu aslında cihazın RAM olarak kullanıldığı anlamına gelmez, RAM ve tabla tabanlı sabit disk arasında çalışan bir şeydir.
Salman

Yanıtlar:


161

Sadece "başka bir yerde" başka bir yere kurmaya ya da uzman donanım veya yazılım kullanmaya imkan tanımayan bir makinede çalışan bağımsız bir uygulama olduğunu düşünüyorum. Diğer cevaplar (doğru), yazılım geçişini veya görev için özel donanımı ele alır.

Bir ağ üzerinden RAM paylaşmanın herhangi bir yolu, bu ağ ortamının sınırlamalarına tabi olacaktır. Gigabit Ethernet bile yaklaşık 100 MB / s (megabayt) ile sınırlı olduğundan, bu "RAM" hızınızın da sınırlı olacağı anlamına gelir.

100 MB / sn, aslında sisteminizde olan RAM hızının küçük bir bölümüdür. Programınız acı verici bir şekilde yavaşlayacaktır ve 90'ların başında bir bilgisayarda çalışıyor gibi hissedeceksiniz.

Modern sabit diskler, sıralı okuma ve yazma işlemleri için bundan biraz daha hızlıdır. SSD'ler birkaç kat daha hızlı.

Bu, programınızı tekrar daha yavaş bir sıraya sokacak gecikme sorunlarını görmezden geliyor.

Bu yavaşlıktan ve diğer teknik sorunlardan dolayı bu, “ev” veya “ofis” sistemleri için çözmeyi denemeye değer olduğunu düşündüğü bir konu değil. Gerekirse daha fazla RAM satın almak daha ucuz ve daha etkilidir.

Sadece bir sayfa dosyası için daha fazla RAM, hatta bir SSD satın alın. Bunu yapmanın, az miktarda fayda sağlamak için çılgınca miktarda iş veya donanım gerektirmeyen başka bir yolu yoktur.


46
Gigabit ethernet üzerinden geçiş / sayfalama işlemi, yerel bir manyetik diskteki bir sayfa dosyasından daha düşük gecikme süresi içerebilir . örneğin, yerel ethernet için 1ms ping süresinin altında 10 ms disk gecikme süresi. Dosya sunucusu disk belleği dosyası tutan (ya da yazılımı takas ediyoruz iSCSI cihazı) sıcak tutar ise onun RAM, potansiyel kazanmak. Windows bir ağ dosyasına disk belleği destekliyorsa IDK. (Linux'un yaptığından eminim ama bu bir Windows sorusudur). Oh, az önce sorunun "İnternet üzerinden" yazdığını gördüm.
Peter Cordes

2
@MarkHu Bu Süper Kullanıcı'da sorulduğunda, askerin kullanılan yazılımın kodu üzerinde herhangi bir kontrolü olduğunu sanmıyorum.
oldmud0

2
@PeterCordes Tanımladığınız şey hala daha fazla RAM veya SSD satın almaktan kaynaklanan bir kayıp. Ve hatta daha kesin olarak Windows'ta. ;)
jpmc26

11
@TomTom ev için ve "normal" ofis kullanımı gigabit, masaüstü makinenizde elde ettiğiniz şeylerden hemen hemen fazlasıdır. Sırf 25G ve 100G'nin omurga altyapısı için yaygın (veya en azından boşuna) olması, onu masaüstünde görmeniz anlamına gelmez. 25GigE bile olsa , yerel bir tedarikçiden makul bir maliyetle 10GigE masaüstü kartı bile bulamıyorum . 10GigE kartlar burada 8GB'lık bir bellek kartının yaklaşık 4 katı. Hangisini makul bir yükseltme olarak değerlendireceğimi biliyorum.
Mokubai

9
"90'ların başında bir bilgisayarda çalışıyor gibi hissediyorum" - garip, 90'ların bilgisayarları bugün bilgisayarlardan çok daha hızlı hissettiler.
Jeremy Visser

73

Sadece tamlık için: InfiniBand diğer makinelerin belleğine doğrudan erişim sağlar.

Ancak, gerektirir:

  • Bir InfiniBand anahtarı
  • Her makineye bir InfiniBand kart ekleme
  • Uygulama, bunu kullanmak için özel olarak programlanmalıdır.

Mevcut bir ağ üzerinden ÇALIŞmaz, bağlı tüm düğümler için tamamen bağımsız bir altyapı gerektirir. İnternet üzerinden de çalışmıyor


53
Ayrıca kesinlikle başka bir 8 GiB ya da RAM gibi bir paket almaktan çok daha pahalı.
sleske,

40
Oh, sadece bir büyüklükte ya da öylesine bir sırayla;)
Gerald Schneider

7
Infiniband gerekmez, RoCE de mümkündür. Ancak, bunun için RDMA'yı destekleyen NIC'ler ve NIC'leri desteklemek için muhtemelen yeni bir anahtar ve RDMA'yı kullanmak için programlanmış bir uygulama gerekir.
alex.forencich

7
+1 çünkü harika ve doğru ama - bu durumda - tamamen işe yaramaz cevap :-)
daniel.neumann

1
Siz - daha pahalı olan 25G veya 100G'yi almadığınız sürece. RDMA gecikme sorununu çözmez.
TomTom

19
Is there any alternative solution?

Bu, büyük ölçüde verinin doğasına bağlıdır.

2 farklı makinede 2 farklı mysql sunucusu çalıştırabilirsiniz.

Ardından verileri 1 / 2'ye bölün ve otomatik olarak hangi sunucuya gideceğini bilmek için programı yazın.

Tabii ki, eğer uygunsa, bu herhangi bir sayıda sunucuya ölçeklenebilir.


Genel olarak “hafızayı paylaşma” yöntemimizin, uygulamayı aktif olarak başka bir makineye taşımak ve daha sonra hangi yöntemler mevcutsa onunla uzaktan çalışmaktan bahsettiğini düşünmüştüm. Kesinlikle, özellikle başka bir makine zaten mevcutsa, daha fazla bellek satın almak için bir alternatiftir. +1
Mokubai

1
Uzak masaüstü gibi mi?
Yenilikler

4
Ayrı işletim sistemi çalıştıran 2 bilgisayarınız var ve her birinde çalışan mysql kopyası var. Böylece # 1 bilgisayar 192.168.0.1 ve bilgisayar # 2 192.168.0.2 (ya da her neyse.) Olabilir. Mysql veya ücretsiz değiştirilen mariadb, programınıza eklemek için libmysql gibi kütüphaneler sunar, böylece mysql'ye yerel erişime sahiptir. Bu uzak bir masaüstü, istemci-sunucu ve / veya istemci ve çoklu sunucu ilişkisi değildir.
cybernard

15

Evet, Network Block Device protokolünü kullanarak yapmak oldukça kolaydır (ve bunu takas gerektiren disksiz sistemler için yaptım).

nbd-serverSunucu makinesine yükleyin ve ana bilgisayar başına dosyaları otomatik oluşturmak için yapılandırın.

İstemci makinelerinizde NBD'nin çekirdeklerinde derlenmiş olduğundan emin olun ve sonra bunları bir NBD montajlı aygıta geçecek şekilde yapılandırın. nbd-clientPaket yardımcı olabilir.

Yukarıdakiler biraz belirsiz ise üzgünüm - Bunu yaptığım makinelere buradan ulaşılamıyor; Onlara erişimim olduğunda ayrıntıları girebilirim.

Adında alternatif bir NBD sunucu uygulaması var nbdkit; Bu konuda hiçbir şey bilmiyorum.


Sorunun bir Windows etiketi olduğunu gördüm. Windows hakkında hiçbir şey bilmiyorum - üzgünüm.
Toby Speight

8
Size takas ediyoruz dosya sunucusu önbelleğe takas dosyası devam ederse bir LAN üzerindeki GigE üzerinde takas 1, yerel bir manyetik sabit sürücü daha düşük gecikme olması gerekir onun RAM. HD ~ 10ms ve LAN ping süreleri ~ 0.25 ms'dir. Windows, örneğin Windows Dosya Paylaşımı (SMB) veya başka bir protokol üzerinden bir sayfa dosyasıyla benzer bir şey yapıp yapamayacağı konusunda hiçbir fikrim yok, ama belki de iSCSI işe yarayabilir. OP “İnternet üzerinden” bahseder; bu iyi bir fikir olmazdı. Ping süreniz HD rastgele erişim gecikmenizden daha düşük değilse, bu bir kazanç değildir.
Peter Cordes

Bunun nasıl "ek RAM" olarak nitelendirildiğini anlamıyorum. Bazı verileri yerel diskteki bir dosyaya boşaltmaktan farklı değil, değil mi?
ivan_pozdeev

Bir Wndows istemcisi için, bir engelleme aygıtı Linux'ta Samba aracılığıyla paylaşılabilir ve ImDisk ile Windows'ta bir disk olarak monte edilebilir (boyutun manuel olarak belirtilmesi gerekir).
ivan_pozdeev

Bunu geçmişte Linux'ta da yaptım, kendi nbd server-client uygulamamı kullanmama rağmen, nbd blok cihazının takas bölümü olarak kullanılması gayet iyi çalıştı.
hanshenrik

9

Küçük, önemsiz detaylar göz önüne alındığında, "Windows 10, iş istasyonunun 8G B RAM'i var" , gerçekten sadece bir akıllıca cevap var: Daha fazla RAM al ve daha az zırvala.

Bir SSD satın almak ve sayfa dosyasını koymak bir sonraki en iyi seçenek olacaktır, ancak gerçekten ... daha fazla RAM satın alın.

Ağ üzerinden sayfa dosyasına ("belleği paylaş") hizmet etmek elbette mümkündür, ancak bu çok kötü bir fikirdir. Ağ üzerinden erişim süresinin yerel bir sürücüye erişmekten daha iyi olacağı sınır çizgisi vakaları olduğu doğru olsa da , aynı anda tutarlı düşük erişim süresine ve yüksek bant genişliğine ihtiyaç duyduğunuz için kullanım durumunuzla ilgisi yoktur . Unutmayın, bir veya iki sayfa hatası beklemiyorsunuz, sürekli değişiyorsunuz. Birkaç bin dolar ödemek istemiyorsanız, RAM veya SSD satın almak için hiçbir yere yakın olmanıza imkân yok.

8 GB, aynı anda Windows 10 ve hafızaya aç bir uygulamayı çalıştırmak için neredeyse yeterli değil . Word, Excel ve Outlook'u aynı anda çalıştırmak için ancak yeterli. Bu, tam olarak milyonlarca insanın iş dizüstü bilgisayarlarında her gün birlikte yaşamak zorunda oldukları tipik, tamamen kullanılamaz "toplam saçmalık şirket kurulumudur" . Başka bir bellek modülüne 100-200 para birimi yatırın ve bir hafta içinde maliyetini düşürür (dakikalar süren şeyler birkaç saniye alır ve zaman paradır - ne yazık ki bu yerel fasulye tezgahınızın başına geçmek genellikle zordur).

Alternatif olarak, makineye sahipseniz, Windows 10 saçmalığını azaltmak için NTLite'ı kullanarak bellek alanını azaltabilirsiniz. Veya, çoğunlukla gereksiz hizmetlerin% 80'ini kapatabilirsiniz. İnanılmaz görünüyor, ancak 2 GB RAM'in altında bir Windows son sürümünü çalıştırmak mümkün .

Ama gerçekten, sadece RAM satın alın ... değerli Windows saatlerini azaltmak için harcadığınız zamanı harcamaktan çok daha hızlı ve kolaydır.


2
Windows gerçekten ram üzerinde bu kadar kötü mü? Ramian'ın tam sistemiyle Debian'ı çalıştırıyorum (fiziksel sürücü yok) ve onlarca açık web tarayıcısı sekmesine, LibreOffice metin ve e-tablolarına, gimp fotoğraf düzenleme özelliğine sahip olabilir ve bir video izleyebilir veya müzik dinleyerek yaklaşık 3 gig bırakabilir toplamda 8GB olan program ve dosyalar için alan. Kazanan değilim, ama kelimelerinizden "toplam BS kurumsal kurulum", Windows'a çok benziyor ...
Xen2050

1
Eh, bu tartışmalı - OP haklı. Satın aldığım en son zaman 8gb machiens 2010 civarındaydı. Bu 2017'dir. 16gb bellek kullanan uygulamalar belirli alanlarda çok nadir değildir (ipucu: e-posta yazmamak ve hayır, kelime de iyidir, çoğu insan bunun üzerine roman yazmaz). Bu küçük bir yatırım - 16GB hafıza, acayip bir öğle yemeği veya başka bir şey.
TomTom

7
@ Xen2050 Gerçekten bu kadar kötü olup olmadığını merak ediyordum, bu yüzden 6GB Windows 10 makinemde Outlook, Excel, Word, Edge'i açtım, çalışan küçük bir SQL Server örneğim var, Malwarebytes 170MB ile bir şeyler yapıyor gibi görünüyor. , Visual Studio 2017'yi açtım, Firefox'u burada açtım ve% 65 oranında bellek kullanıyorum ve Windows'un sıkıştırılmış belleği kullanmaya başlaması bile gerekmedi. Yani, IME, Windows 10 8GB RAM'in altında çalışıyor ve yine de Damon'ın Windows'tan hoşlanmadığı açıkça görülüyor.
Andrew Morton

1
@Damon: Ancak, fazladan RAM'i ne tüketen konusunda bir çeşit analiz yapmadıysanız, bunu "işveren tarafından kurulan satış sonrası saçmalığa" karşı "Windows saçmalığını" suçlamaya gerek yoktur. Çok sayıda insan (kendim dahil) bellek yoğun hesaplamalar yaptığından, Windows 7, Windows 8.x ve Windows 10'da bu tür bir sorun olmadan, suçlunun bir parçası olmadığını şiddetle tavsiye ediyor (ancak kanıtlamıyor) Windows'un kendisi.
Ben Voigt

6

Basit bir alternatif , uygulamayı uzaktaki bir bilgisayarda , muhtemelen tahsis edilmiş bir kullanıcı hesabı altında çalıştırmak ve basitçe RDP, VNC veya uygun olanı kullanarak kontrol etmektir.


Eğer uzaktaki PC'de yeterince ram varsa ...
LateralTerminal

1
@LateralTerminal Bu ima edildi.
Clonkex

2
Evet, iki makinenin RAM'ını bir ağ üzerinden birleştirmek ... net, sıradan uygulamalar için (düğmeler, menüler ile kare, gri tür) için işe yaramaz.
rackandboneman

6

Diğer bir seçenek, uygulamayı geçici olarak ramların kolayca yukarı veya aşağı ölçeklenebileceği bir ortamda dağıtmaktır.

Bir yeniden başlatma ile boyut olarak değiştirilebilen bir Amazon AWS örneğine bakardım.

IE, bir C5.large gibi küçük bir örnekte 4GB ram ve 2 çekirdeğe sahiptir ve linux için günde 2.04 USD, pencerelerin yüklenmesi için günde 4.26 USD tutarındadır. EBS disk alanı ekstra bir maliyettir ve ayrılan GB ile doğrusal olarak ölçeklenir.

Sisteminizi bu daha küçük boyutta ayarlayabilir ve ardından tam gürültü yapmak istediğinizde, durdurabilir, örnek boyutunu değiştirebilir ve yazılımı çalıştırabilirsiniz.

  • m5.4xlarge 64 GB ram ve 16 çekirdektir, pencereler için 18.44 USD / gün veya 36.10 USD / gün.
  • r4.8xlarge 244 GB ve 32 çekirdekli, 51.07 USD / gün ya da pencereli 86.40 USD / gün.
  • x1.32xlarge, 1952 GB ve 128 çekirdekli, 320.12 USD / gün veya 461.43 $ / gün

Ya da en büyüğü ...

  • x1e.32xlarge, 640.52 USD / gün veya pencereli 781.82 $ / gün için 3904 GB ve 128 çekirdektir. Eğer meslektaşınızın bundan daha fazlasına ihtiyacı varsa, o zaman problemin daha optimal bir şekilde yeniden yazılması gerekir.

https://www.ec2instances.info/ uygun bir beden seçmenize yardımcı olacaktır. Bazı konumların diğerlerinden daha pahalı olduğunu unutmayın. Singapur ve Kuzey Kaliforniya pahalıdır. Ancak VM'niz, çalışmadığı zaman, disk depolama maliyetleri dışında hiçbir ücrete tabi değildir.

Dezavantajı, eğer bu hafızaya uzun süre ihtiyaç duyarsanız, VM zamanını satın almanın pahalı bir yoludur. Ancak, muhasebeciler bazen kira gibi işletme maliyetlerini, yükseltme gibi sermaye maliyetlerini tercih ediyor gibi görünmektedir.


1
OP'nin isteğine göre bu cevabın "ağ üzerinden ram'a erişim" e hitap etmediğini anladım. Daha fazla ram olan uzaktaki bir ana bilgisayara erişmek gibi. Bununla birlikte, bütçelerin bazı yerlerde nasıl çalıştığını bilmek, işi güvenilir bir şekilde yapmak için geçerli bir çözüm olabilir.
Criggie

4

Diğerlerinin dediği gibi teknik olarak mümkün ama buna değmez.

Ancak, bilgisayarınızın kullanımını hızlandırmak istiyorsanız, bazı uygulamalarınızı uzaktaki bir sunucuya dışa aktarmak mümkündür.

Bu çoğunlukla ne üzerinde çalıştığınız ve hangi uygulamayı kullandığınıza bağlı olacaktır. Küçük bir veri çıkışı için çok fazla işlem süresi gerektiren programlar kullanıyorsanız, başka bir şey üzerinde çalışırken zamandan ve kaynaklardan tasarruf etmek için bunları bilgisayarınızdan farklı bir sunucuda çalıştırmasını sağlayabilirsiniz.

Aklımdaki örnek, her değişiklik yaptığımda kodumu test eden bir sunucudur. Böyle bir çözümü olan fikir belirli kullanım durumlarıyla sınırlı olmasıdır.


4

IT'den PC'niz için daha fazla RAM satın almasını isteyin ve uygulamanın Görev Yöneticisi'nde kullanımının ekran görüntüsünü kullanma gereksinimini gösterin.


4
Pratik çözüm ... BT'den diğer sistemlerden daha fazla koçta geçici olarak geçiş yapmasını istemek bile “ücretsiz” bir cevap olmalıdır.
Xen2050

2
@ Xen2050 Bu arada, meslektaşınız ağlıyor çünkü sistemi artık açılmıyor.
Willtech

3
@Willtech, BT'nin tüm parçaların ve tüm çalışma sistemlerinin parçalarının bakımını yapması normal ve uygun bir durumdur. Kapalı kalma süresi gerçek maliyettir.
Christopher Rehtage

3

Bunun için Kove adlı bir şirket aracılığıyla ticari bir çözüm var ( http://kove.net/). Spesifikasyonlara bağlı olarak, RoCE gibi diğer seçenekler bazen de sağlanabilir olmasına rağmen, “arka panelde” çalışmak için bir Infiniband altyapısı gerektirir (ethernet normal şekilde çalışır). Sıfır kod değişikliği entegrasyonuna izin vermek için bir dizi saydam arabirim ve daha doğrudan CPU erişimi olan (yani çekirdeğin tepesinden kaçınılarak) çekirdek baypas için API'ler sağlar. Performans açısından, uygulamanıza bağlıdır. Eğer CPU'ya bağlıysanız, etki minimum olabilir (ki bu şaşırtıcı olabilir). Yerel ana bilgisayara bağlı bellek bant genişliği iseniz, size daha büyük bellek verir, ancak zaten mevcut darboğaz tarafından boğulacaksınız. Bu durumda, iş yükünün bir kutuya konabilecek hafızadan daha büyük olması avantajlı mıdır? ve RAM tükendi değil? Sanallaştırma ve python makinesi öğrenme kitaplıklarıyla (çok) iyi sonuçlar gördük. Yüksek uçlu HPC uygulamaları daha kötü bir eğilimdedir, ancak CI'leri kullandık ve MPI ile karşılaştırıldığında artı sayılan düğüm sayıları azaltılırken (düğümler RAM için vardı, CPU döngüleri için vardı) performansın kabul edilebilir olmasını sağlamayı başardık. . Bunun meslektaşınız için iyi bir çözüm olup olmadığının anlaşılması zor, ancak bakabileceğiniz bir seçenek. Umarım yardımcı olur. Açıkçası, Kove için çalışmıyorum ve hiçbir finansal teşvikim yok, ancak onlarla birkaç yıldır birlikte çalıştım ve bu teknolojinin belirli hesaplama işlemlerini önemli ölçüde etkileme potansiyeline sahip olduğunu düşünüyorum. ancak C API'leri kullandık ve düğüm sayısını düşürürken performansın kabul edilebilir olmasını sağlamayı başardık (düğümler RAM için CPU döngüleri için oradaydı), bu da MPI ile karşılaştırıldığında bir artı. Bunun meslektaşınız için iyi bir çözüm olup olmadığının anlaşılması zordur, ancak bakabileceğiniz bir seçenektir. Umarım yardımcı olur. Açıkçası, Kove için çalışmıyorum ve hiçbir finansal teşvikim yok, ancak onlarla birkaç yıldır birlikte çalıştım ve bu teknolojinin belirli hesaplama işlemlerini önemli ölçüde etkileme potansiyeline sahip olduğunu düşünüyorum. ancak C API'leri kullandık ve düğüm sayısını düşürürken performansın kabul edilebilir olmasını sağlamayı başardık (düğümler RAM için CPU döngüleri için oradaydı), bu da MPI ile karşılaştırıldığında bir artı. Bunun meslektaşınız için iyi bir çözüm olup olmadığının anlaşılması zordur, ancak bakabileceğiniz bir seçenektir. Umarım yardımcı olur. Açıkçası, Kove için çalışmıyorum ve hiçbir finansal teşvikim yok, ancak onlarla birkaç yıldır birlikte çalıştım ve bu teknolojinin belirli hesaplama işlemlerini önemli ölçüde etkileme potansiyeline sahip olduğunu düşünüyorum.


Sonsuzluk ayarları için Howmany Gigabytes bellek satın alabilirsiniz?
joojaa

Evet, buradaki asıl mesele, sadece 8 gb belleğe sahip olmaktan ve 16'ya ihtiyaç duymaktan bahsettiği küçük nokta. Bu, "Uzaktan RAM'i Nasıl Kullanırım" değil, "Neden halâ ki 10 yıllık özelliklere sahip bir sistemi kullanıyorum" değil. .
TomTom

@jooja 6TB'imiz var. Gördüklerimize dayanarak, bir sınır görmedik. Ek uzak RAM cihazları eklemeye devam edebilirsiniz. Oldukça doğrusal ölçeklenebilir gibi görünüyor, bu yüzden bir mühendislik / maliyet problemi. Bir keresinde kağıt üzerine bir 1PB sistemi tasarladık, ancak açıkçası bunu test etmek için kullanamadık.
Bill,

@TomTom 8GB hakkındaki yorumu görmedim, ancak evet, açıkça 8GB'a karşılık 16GB RAM'den bahsediyorsak, yeni bir makine için birkaç K $ sorunu çözecektir.
Bill

Heck, birkaç yüz dolar için, anakart gülünç derecede yaşlı ve sınırlı değilse, muhtemelen RAM'i 32GB'a yükseltebilirsiniz.
kabarık

2

Başka bir bakış açısı - belki de sorun sistem kaynakları üzerindeki sınır değil, arkadaşınızın yazdığı boşa harcanan uygulama. 6 GB RAM, çok fazla bellek harcar.

Sırf diğer uygulamaların birçoğunun aşırı şişmiş olması , arkadaş uygulamanızın bunlardan biri olması gerektiği anlamına gelmez. Farklı programlama yöntemlerinin kullanılması, hızı arttırırken hafıza gereksinimlerini azaltabilir. Örneğin, uygulama tüm veri kümesini belleğe yüklüyorsa ve üzerinde çalışıyorsa, örneğin birkaç yerel dizin ile (yerel veya uzak) SQL veritabanına veri seçme ve bu dizine erişme işleminden çok daha fazla boşa gider. Hepsini bir kerede yüklemek yerine, mümkünse veri bloğunu işlemesini sağlayın. Bellek içi yapılar da zararlı olabilir. İşiniz bittiğinde boş hafıza. Hafıza haritasını alabileceğiniz şeyleri RAM'e yüklemeyin. Ve yüzlerce başka ipucu ...

Bununla birlikte, uygulama gerçekten diğer bilgisayarlarda depolanması gereken daha fazla belleğe ihtiyaç duyuyorsa, memcached ve benzerini orada depolamak için değiştirilebilir. Gelecekte daha iyi ölçekleneceği için bonus puan.


5
6 gb bellek, uygulamaya bağlı olarak çok fazla bir şey değil. Son kullanıcılar bile fotoğraf düzenleme (photoshop RAM'i sever ve yüksek son kamera 64 megapiksel görüntüler çeker), Video Düzenleme (daha da kötüsü), sonra matematiksel çalışma var. Heck, hatta excel bile birkaç GB kullanır. Twitter ve benzeri şeyleri kullanan herkes e-posta yazmıyor.
TomTom

@TomTom yüksek megapiksel işleme ihtiyacınız varsa, yüksek bellek gereksinimlerine (isteğinizin doğasına göre) sahip olursunuz. Ancak, Excel sayfanıza DNA genomu eklemesi yapmıyorsanız ve hala birkaç GB RAM kullanıyorsa, tam da bahsettiğim şişkinlik ve özensiz programlama türüdür. Ev bütçeniz, Lotus 1-2-3 yıllarında Lotus (1-2-3) yıllarında Excel'inkinden 3 büyüklüğünde daha az RAM (ve en azından yüzlerce kez daha yavaş işlemciler) olan makinelerde hızlı bir şekilde (ya da daha hızlı) işleniyordu. günümüzün.
Matija Nalis

1
Kim, ne cahil bir cevap. İnsanların üstünlük için kullandıkları şeylerle ilgili çok az deneyiminiz olduğunu varsayabilirim. Microsoft Office'in 64 bit sürümünü yaptığında, bunun çok az faydası olduğunu söylediler - Access ve Excel'in dışında, çok sayıda gigabayt bellek kullanarak, Excel üzerinden vahşice büyük bir analiz yapan bazı insanlar olduğu için, Access ve Excel'in dışında. Excel'in esnekliği ve programcı olmayanlar için ulaşılabilirlik, aracı kullanabilmelerini sağlar (istatistikçiler R kullanımı konusunda eğitilme eğilimindedir). Bazı finans çalışanları tarafından şahsen 200 sayfa excel dosyası gördüm.
TomTom

Ev bütçenizin Excel’de hesaplanması uzun zaman alıyorsa, benden çok daha zenginsiniz. Excel ile 1-2-3 arası ilginç bir soru - çekirdek kireç döngüsü 1-2-3'te daha hızlı olabilir, çünkü fazla bir şey yapmaz. Fakat çok çekirdekli bir makinede Excel kolayca 1-2-3'ü geçecek. Ve tabii ki devasa genom yapıştırma tabakaları, tabaka boyutları nedeniyle muhtemelen 1-2-3'te açılmayacaktır. Şeffaflığın çıkarlarına göre, daha önce çekirdek calc ekibinde Excel üzerinde çalıştığımı itiraf etmeliyim, bu yüzden önyargılı olabilirim ...
Chris Rae

1

Böylece kullanıcı HOW'u ağ üzerinden paylaşmasını istedi . İyi bir fikirse, hayır. Yani burada aslında nasıl yapabileceğini.

Bunun iyi bir fikir olduğunu veya başarılı olacaktır demiyorum ama gerektiği çalışır.

  • Bilgisayar 1 = "master" - kodun yürütüldüğü yer
  • Bilgisayar 2 = "çocuk" - hafıza bağışçısı

Bunun bir iSCSI bağlama noktası oluşturabileceğiniz Windows Server olmadığını farz ediyorum.

Bilgisayar 1 Adım:

  1. Dataram'ın ücretsiz ramdiskini indirin: http://memory.dataram.com/products-and-services/software/ramdisk
  2. Bir ramdisk oluşturun ve NTFS ile biçimlendirin - talimatları kendi sitelerinde bulabilirsiniz.
  3. Disk Yöneticisi'nde, NTFS ile biçimlendirilmiş ramdisk üzerinde bir VHD dosyası oluşturun
  4. Ramdisk kök dizinini ağ üzerinde SMB ile paylaş - Sürücüyü sağ tıkla, paylaş, bu klasörü paylaş

Bilgisayar 2 adım:

  1. Paylaşılan sürücüyü servisten bir Drive'a eşleyin
  2. Yukarıda 3. adımda oluşturduğunuz VHD'yi Disk yöneticisinde bağlayın
  3. Yerel sayfa dosyası konumunu Windows Sayfa Dosyasını Taşı aracılığıyla bağlanmış VHD'ye taşıyın
  4. Diğer sayfa dosyası girişlerini kaldırın.

Bitti!

Uyarılar - Windows sayfa dosyasını ağ paylaşımına taşımanıza izin veriyorsa, VHD saçmalığını atlayabilirsiniz. Çevrimiçi olarak bunun çok fazla örneği yok (açık nedenlerden dolayı).

Komple sistem kararsızlığı veya tamamen başka bir şey oluşabilir. Kimse ne olacağını gerçekten bilmiyor.


0

Herhangi bir türden sadece “hafıza” değil, ağ üzerinden paylaşım için “RAM” dediğiniz gibi, son cevap teorik olarak evet, pratik olarak hayır olacaktır.

Depolama ve diğer geçici veriler gibi diğer hafıza türleri ağda çeşitli amaçlar ve nedenlerle düzenli olarak paylaşılır. Aynı şekilde gerektiğinde RAM ağ üzerinden paylaşılabilir. Ancak performans ve maliyet gerçek dünyada mümkün olamayacak kadar yüksek olacaktır.

RAM veya rasgele erişim belleği, bir işletim sistemi tarafından çalışma alanı olarak kullanılır, böylece üzerinde birçok okuma / yazma işlemi gerçekleştirilir. Ortalama bir sistemde, RAM ile veri hızı kapasitesi diğer parçalara göre en yüksektir. RAM'i bir ağa yerleştirirseniz, çok yüksek hızlı veri aktarım kapasitesine sahip olmanız gerekir ve teknik olarak mümkün olsa bile maliyet yüksek olacaktır. Ağ hızı yükseltmesi için maliyetin çok az bir kısmı ile yerel olarak makineniz için RAM alırsınız.


0

Uygulamalar genellikle sanal bellekte çalışır, bu nedenle sanal bellek gereksinimleri, sistemin kullanılabilir fiziksel belleğini performanstan başka bir sonuç olmadan aşabilir. İşletim sistemi basitçe olacak sayfa aktif kullanım için her an gerektiği gibi diske sanal bellek dışarı fiziksel belleği boşaltmak için. Bu genellikle makul olan uygulamalar için sadece para cezası işleri yöreden (biraz uygulamanın sanal bellek alanında sınırlı alanlara odaklanmış herhangi bir zamanda aktivite). Bir uygulamanın zayıf bir konumu varsa (sürekli olarak tüm sanal alanın belleğine referansta bulunursa), tüm sanal belleği fiziksel bellekte saklanamadıkça kötü çalışır (tüm sanal belleği yerleşiktir).

Yani, burada birkaç olasılık var:

  • Uygulama yalnızca geniş bir alan kaplıyor ancak iyi bir konuma sahipse, elinizde bulunan bilgisayarda çalıştırmanız gerekir; performans kabul edilebilir, daha fazla belleğe sahip bir bilgisayarda fark edilebilir derecede gelişebilir veya artmayabilir.
  • Zayıf bir konuma sahipse, mevcut bilgisayarda zaten çok zayıf şekilde çalışacağını görebilirsiniz. (Bu sizin için durum gibi görünüyor)
  • (Varsayılan) manyetik disk sürücüsünü katı hal sürücüsüne yükseltin (çok daha hızlılar)
  • Kullanılabilir bilgisayara hafıza ekleyin (mümkünse)
  • Daha fazla belleğe sahip bir bilgisayar bulmanız ve üzerinde çalıştırmanız gerekebilir.
  • Uygulamayı daha küçük bir sanal ayak izine veya daha iyi bir bölgeye sahip olacak şekilde geliştirin (eğer uygulamanın yazarı ile birlikteyseniz).

Uzak bir bilgisayarda bellek kullanma fikri temelde ağ bağlantılı bir disk belleği dosyası oluşturuyor . Teoride, işe yarayabilir, ancak pratikte, disk belleği dosyası bilgisayardaki yerel ise (kendi sabit diski) ağ bant genişliği ve gecikme nedeniyle performans çok daha iyi olacaktır. Uzaktaki sistemin disk belleği dosyasını belleğinde veya diskinde barındırması önemli değildir, tıkanıklık (performansın en önemli sınırlayıcısı) ağ olacaktır. Bu özellikle internet üzerinden gerçekleşecek, ancak uzaktaki bilgisayar aynı LAN'da bitişik olsa bile doğru olacaktır.


Windows bir ağ sürücüsünde bir sayfa dosyasına izin vermez, bu nedenle yeterince hızlı olsa bile, bu yapılamaz.
Jamie Hanrahan

@JamieHanrahan Görünüşe göre ayarı doğrudan kayıt defterinde değiştirirseniz yapabilirsiniz. Ağ sürücülerinin Windows'taki kullanıcı başına olmasına rağmen bazı ayrıntıları dışladılar mı merak ediyorum. Ayrıca bunun bir yeniden başlatma sonrasında kırılacağından şüpheleniyorum.
ivan_pozdeev

1
Yine de bu korkunç bir fikir, bu yüzden UI bunu engelliyor. Ağ bağlantıları, disk belleği için güvenebilecek kadar güvenilir değildir. Çok sayıda çekirdek verisinin (disk belleği havuzu) disk belleği olabileceğini unutmayın. Eğer erişilebilir değilse, çok kısa bir süre için bile olsa, işletim sistemi çökecektir.
Jamie Hanrahan

0

Bu gerçekten ne tür bir uygulama olduğuna ve tokmağın ne için kullanıldığına bağlı.

Örneğin, birçok web uygulaması, bir memcachedsunucuya bağlanarak ağ üzerinden RAM kullanabilir . Bu, önbellek verilerinin (ve erişilmesi hızlı olması gereken diğer verilerin) çok fazla RAM ile başka bir bilgisayarda saklanmasına olanak sağlayacaktır.

Tabi bu uygulamaya özeldir ve memcached kullanabilen bir uygulamaya ihtiyaç duyar. Tarayıcı, böyle bir önbellek arka ucunu kullanmayı desteklemediğinden ikinci bir durgunluk örneği açmanıza yardımcı olmaz.


-1

RAM'i paylaşmak yerine, sadece bu uygulamayı Network PC'de çalıştırılacak olan bir çocuk .exe dosyası oluşturmak için kodlayın ve aynı bilgisayarda yapın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.