Partager la RAM sur le réseau


49

Mon collègue utilise une application qui consomme beaucoup de mémoire, ce qui ralentit trop le système. Est-il possible de partager la mémoire avec d'autres ordinateurs via Internet?

Le système dispose de 8 Go de RAM et l'application consomme plus de 6 Go.


5
Exécutez-le sur un serveur très puissant via Remote Desktop, VNC ou X11 ??
WGroleau

3
Il vaut mieux utiliser de grands disques de stockage (disques durs ou SSD) en cache, comme indiqué précédemment.
Firebug


79
Vous pourriez avoir plus de chance en téléchargeant plus de RAM ...
Mehrdad

4
Les versions modernes de Windows vous permettent d’utiliser des clés USB ou des cartes SD pour améliorer les performances. En réalité, cela ne signifie pas que le périphérique est utilisé en tant que RAM mais quelque chose qui fonctionne entre RAM et disque dur basé sur plateau.
Salman Un

Réponses:


162

Je n'ai envisagé qu'une application autonome fonctionnant sur une machine "standard", sans possibilité de l'installer ailleurs ni d'utiliser du matériel ou des logiciels spécialisés. D'autres réponses (correctement) concernent la migration de logiciel ou le matériel dédié à la tâche.

Tout moyen de "partager la RAM" via un réseau sera soumis aux limitations de ce support réseau. Etant donné que même un gigabit Ethernet est limité à environ 100 Mo / s (mégaoctets), cela signifie que votre vitesse "RAM" sera également limitée.

100 Mo / s est une fraction infime de la vitesse de la mémoire vive réellement présente dans votre système. Votre programme sera douloureusement lent et donnera l'impression d'être exécuté sur un ordinateur dès le début des années 90.

Les disques durs modernes sont, en lecture et écriture séquentielles, légèrement plus rapides que cela. Les SSD sont plusieurs fois plus rapides.

Cela ignore les problèmes de latence, ce qui ralentira à nouveau votre programme d'un ordre de grandeur.

En raison de la lenteur et d'autres problèmes techniques, ce n'est pas un problème que quelqu'un a jamais jugé intéressant de tenter de résoudre pour des systèmes "domestiques" ou "de bureau". C'est plus économique et plus efficace d'acheter plus de RAM si nécessaire.

Achetez simplement plus de RAM ou même un SSD pour un fichier de page. Il n'y a pas d'autre moyen de faire cela qui n'exige pas une quantité insensée de travail ou de matériel pour peu d'avantages.


46
L'échange / la pagination sur Ethernet gigabit peut avoir une latence inférieure à celle d'un fichier d'échange sur un disque magnétique local . Par exemple, une latence de disque de 10 ms contre un temps de réponse inférieur à 1 ms pour un réseau local Ethernet. Si le serveur de fichiers contenant le fichier d'échange (ou le périphérique iSCSI que vous échangez) le conserve au chaud dans sa mémoire vive, vous gagnez potentiellement. IDK si Windows prend en charge la pagination vers un fichier réseau. (Je suis presque sûr que Linux le fait, mais ceci est une question de Windows). Oh, je viens de voir que la question dit "par Internet", alors nvm.
Peter Cordes

2
@MarkHu Etant donné que cela a été demandé à Super User, je ne pense pas que le demandeur ait le moindre contrôle sur le code du logiciel utilisé.
oldmud0

2
@PeterCordes Ce que vous décrivez est toujours une perte par rapport à l'achat de plus de RAM ou d'un SSD. Et encore plus certainement sous Windows. ;)
jpmc26

11
@TomTom pour la maison et le bureau "normal" d'utilisation gigabit est toujours ce que vous obtenez sur votre ordinateur de bureau. Ce n’est pas parce que les réseaux 25G et 100G sont courants (ou au moins disponibles) pour l’infrastructure dorsale que vous êtes susceptible de les voir sur le bureau. Je ne peux même pas trouver une carte de bureau 10GigE chez un fournisseur local à un coût raisonnable, encore moins une carte 25GigE. Les cartes 10GigE coûtent environ 4 fois le coût d'une clé USB de 8 Go ici. Je sais que je considérerais une mise à niveau raisonnable.
Mokubai

9
"avoir l’impression de fonctionner sur un ordinateur du début des années 90" - étrange, les ordinateurs des années 90 semblaient beaucoup plus rapides que les ordinateurs actuels.
Jeremy Visser

73

Juste pour être complet: InfiniBand permet un accès direct à la mémoire d’autres machines.

Cependant, il nécessite:

  • Un commutateur InfiniBand
  • Une carte InfiniBand add on dans chaque machine
  • L'application doit être programmée spécifiquement pour utiliser cette

Il ne fonctionne PAS sur un réseau existant, il nécessite une infrastructure totalement indépendante pour tous les nœuds connectés. Cela ne marche PAS non plus sur Internet


53
C’est aussi certainement beaucoup plus cher que d’obtenir 8 Go de RAM :-).
Sleske

40
Oh, seulement d'un ordre de grandeur environ;)
Gerald Schneider

7
Vous n'avez pas besoin d'infiniband, RoCE est également possible. Toutefois, cela nécessite des cartes réseau prenant en charge RDMA et probablement un nouveau commutateur prenant en charge les cartes réseau, ainsi qu'une application programmée pour utiliser RDMA.
alex.forencich

7
+1 parce que c'est excellent et correct mais - pour cette situation - une réponse totalement inutile :-)
daniel.neumann

1
Vous faites - sauf si vous obtenez 25G ou 100G qui sont plus chers. RDMA ne résout pas le problème de latence.
TomTom

19
Is there any alternative solution?

Cela dépend fortement de la nature des données.

Vous pouvez exécuter 2 serveurs mysql différents sur 2 machines différentes.

Divisez ensuite les données en 1/2 et écrivez le programme pour savoir automatiquement sur quel serveur vous souhaitez vous rendre.

Bien sûr, cela peut être étendu à un nombre quelconque de serveurs si vous les avez disponibles.


J'avais envisagé de mentionner qu'en règle générale, la «partage de mémoire» consiste à déplacer activement l'application sur une autre machine, puis à la manipuler à distance, quelles que soient les méthodes disponibles. C'est certainement une alternative à l'achat de plus de mémoire, surtout si une autre machine est déjà disponible. +1
Mokubai

1
Vous aimez un bureau distant?
Innov

4
Vous avez 2 ordinateurs exécutant un système d’exploitation séparé, chacun disposant d’une copie de mysql en cours d’exécution. Ainsi, l'ordinateur n ° 1 pourrait être 192.168.0.1 et l'ordinateur n ° 2 192.168.0.2 (ou autre.) Sur votre PC principal, vous pouvez maintenant accéder à ces deux adresses IP pour récupérer vos données. Mysql ou son remplacement gratuit mariadb propose des bibliothèques comme libmysql à ajouter à votre programme pour lui permettre d’avoir un accès natif à mysql. Ce n'est pas un poste de travail distant, sa relation client-serveur et / ou client et serveur multiple.
Cybernard

15

Oui, c'est assez facile à faire (et je l'ai fait pour les systèmes sans disque nécessitant un échange), en utilisant le protocole Network Block Device.

Installez-le nbd-serversur le serveur et configurez-le pour créer automatiquement des fichiers par hôte.

Assurez-vous que vos ordinateurs clients ont compilé NBD dans leurs noyaux, puis configurez-les pour les permuter sur un périphérique monté par NBD. Le nbd-clientpaquet peut aider.

Désolé si ce qui précède est un peu vague - Les machines sur lesquelles j'ai fait cela ne sont pas accessibles d'ici; Je pourrai peut-être entrer les détails quand j'aurai accès à eux.

Il existe une autre implémentation de serveur NBD appelée nbdkit; Je n'en sais rien.


Je viens de remarquer que la question comporte une balise Windows. Je ne sais rien de Windows - désolé.
Toby Speight le

8
+1, la permutation sur GigE sur un réseau local doit être inférieure à celle d'un pilote dur magnétique local, si le serveur de fichiers que vous échangez conserve le fichier d'échange mis en cache dans sa RAM. Temps de recherche HD de ~ 10 ms et temps de connexion LAN de ~ 0,25 ms. Aucune idée si Windows peut faire quelque chose de similaire, par exemple avec un fichier de page sur le partage de fichiers Windows (SMB) ou tout autre protocole, mais iSCSI pourrait peut-être fonctionner. Le PO mentionne "sur Internet"; ce ne serait pas une bonne idée. À moins que votre temps de ping ne soit inférieur à votre latence d'accès aléatoire HD, ce n'est pas gagnant.
Peter Cordes

Je ne vois pas comment cela peut être qualifié de "RAM supplémentaire". Ce n'est pas différent de déposer des données dans un fichier sur un disque local, non?
ivan_pozdeev

Pour un client Wndows, il est possible de partager un périphérique de bloc sous Linux via Samba et de le monter en tant que disque sous Windows avec ImDisk (la taille doit être spécifiée manuellement).
ivan_pozdeev

Je l'ai également fait par le passé sous Linux, bien que j'aie utilisé ma propre implémentation nbd serveur-client, l'utilisation du périphérique de bloc nbd en tant que partition swap a bien fonctionné.
hanshenrik

9

Étant donné les petits détails sans importance «Windows 10, la station de travail dispose de 8 Go de RAM» , il n’ya vraiment qu’une réponse sensée: achetez plus de RAM et utilisez moins de merde.

Acheter un SSD et y placer le fichier de page constituerait la meilleure option, mais vraiment ... achetez plus de RAM.

Servir le fichier de page ("share memory") sur le réseau est bien sûr possible, mais c'est une très mauvaise idée. Il est vrai qu'il existe des cas de limites où le temps d'accès sur le réseau sera mieux que l' accès à un lecteur local, qui est hors de propos pour votre cas d'utilisation, car vous avez besoin cohérent faible temps d'accès et une bande passante élevée en même temps. N'oubliez pas que vous n'anticipez pas une ou deux pages, vous permutez en permanence. Sauf si vous êtes prêt à payer quelques milliers de dollars, il n’ya aucun moyen d’acheter de la RAM ou un SSD.

8 Go ne suffisent pas pour exécuter Windows 10 et une application gourmande en mémoire en même temps. C'est à peine suffisant pour exécuter Word, Excel et Outlook en même temps. C'est exactement la "configuration d'entreprise totale" de conneries complètement inutilisable avec laquelle des millions de personnes doivent vivre chaque jour sur leur ordinateur portable de travail. Investissez 100 à 200 devises dans un autre module de mémoire, qui en amortira le coût en une semaine (quelques minutes en quelques minutes seulement, et le temps, c'est de l'argent - malheureusement, il est souvent difficile d'entrer dans la tête de votre compteur de haricots local).

Sinon, si vous possédez la machine, vous pouvez utiliser NTLite pour réduire la merde Windows 10, réduisant ainsi l'encombrement de la mémoire. Vous pouvez également désactiver 80% des services pour la plupart inutiles. Cela semble incroyable, mais il est possible d’exécuter une version récente de Windows avec moins de 2 Go de RAM utilisée.

Mais, en réalité, achetez simplement de la mémoire vive ... c’est tellement plus rapide et plus facile que de passer des heures de votre temps précieux à réduire la merde Windows.


2
Les fenêtres sont-elles vraiment si mauvaises sur le bélier? J'utilise Debian avec le système complet en RAM (pas de lecteur physique) et je peux avoir des dizaines d'onglets de navigateur Web ouverts, du texte et des feuilles de calcul LibreOffice, la retouche photo Gimp, et regarder une vidéo ou écouter de la musique, laissant environ 3 concerts gratuits. espace pour les programmes ou les fichiers, le tout sur un total de 8 Go. Je ne suis pas un vainqueur, mais d'après vos mots, la "configuration
globale d'

1
Eh bien, c'est discutable - le PO a le droit. La dernière fois que j'ai acheté 8gb machiens était aux alentours de 2010. Nous sommes en 2017. Les applications utilisant une mémoire de 16gb ne sont pas rares dans certains domaines (astuce: ne pas écrire d'e-mails et non, le mot convient également, la plupart des gens n'écrivent pas de romans dessus). Ceci est un petit investissement - 16 Go de mémoire est un déjeuner terrifiant ou quelque chose.
TomTom

7
@ Xen2050 Je me demandais si c'était vraiment si grave, alors sur ma machine Windows 10 de 6 Go, j'ai ouvert Outlook, Excel, Word, Edge, j'ai une très petite instance de SQL Server en cours d'exécution, Malwarebytes semble faire quelque chose avec 170 Mo , J’ai ouvert Visual Studio 2017, Firefox est ouvert ici, et j’utilise 65% de la mémoire utilisée et Windows n’a même pas eu besoin de commencer à utiliser de la mémoire compressée. Ainsi, IME, Windows 10 fonctionne correctement avec moins de 8 Go de RAM et, de toute façon, le dégoût apparent de Damon pour Windows n’est pas pertinent pour la réponse.
Andrew Morton

1
@Damon: Mais à moins que vous n'ayez fait une analyse sur ce qui consomme de la RAM supplémentaire, rien ne permet de blâmer cela "de la merde Windows" par rapport à "la merde du marché secondaire installée par l'employeur". Etant donné que de nombreuses personnes (y compris moi-même) ont effectué des calculs gourmands en mémoire sous Windows 7, Windows 8.x et Windows 10, sans ce genre de problème, cela suggère fortement (mais ne prouve pas) que le coupable n'en fait pas partie. de Windows lui-même.
Ben Voigt

6

Une alternative simple consisterait à exécuter l’application sur le PC distant , éventuellement sous un compte utilisateur dédié, et à la contrôler simplement via RDP, VNC ou tout autre moyen pratique.


Si le PC distant a assez de
mémoire

1
@ LatéralTerminal C'est implicite.
Clonkex

2
Ouais, fusionner la RAM de deux machines sur un réseau ... net ne fonctionnera pas, pas pour les applications ordinaires (carré, type gris avec boutons et menus).
rackandboneman

6

Une autre option consiste à déployer temporairement l'application dans un environnement dans lequel la RAM peut être facilement mise à l'échelle.

Je regarderais une instance Amazon AWS, qui peut être modifiée en taille avec un redémarrage.

Par exemple, un petit exemple comme un C5.large a 4 Go de RAM et 2 cœurs, et coûte 2,04 USD par jour pour Linux, ou 4,26 USD par jour pour une installation Windows. L'espace disque EBS est un coût supplémentaire et évolue linéairement avec les Go alloués.

Vous pouvez configurer votre système dans cette taille plus petite, puis, lorsque vous souhaitez utiliser le bruit, arrêtez-le, modifiez la taille de l'instance et exécutez le logiciel.

  • m5.4xlarge est 64 Go de RAM et 16 cœurs, pour 18,44 USD / jour ou 36,10 USD / jour pour Windows.
  • r4.8xlarge est de 244 Go et 32 ​​cœurs, pour 51,07 USD / jour ou 86,40 USD / jour avec fenêtres.
  • x1.32xlarge est 1952 Go et 128 cœurs, pour $ 320.12 USD / jour ou $ 461.43 / jour avec fenêtres

Ou le plus gros ...

  • x1e.32xlarge représente 3904 Go et 128 cœurs, pour 640,52 USD / jour ou 781,82 USD / jour avec fenêtres. Si votre collègue a besoin de plus que cela, le problème nécessite une réécriture plus optimale.

https://www.ec2instances.info/ vous aidera à choisir une taille appropriée. Notez que certains endroits coûtent plus cher que d’autres. Singapour et la Californie du Nord sont chers. Cependant, votre machine virtuelle ne coûte rien lorsqu'elle ne fonctionne pas, à part les coûts de stockage sur disque.

L'inconvénient est que si vous avez besoin de cette mémoire pendant une longue période, acheter du temps sur une machine virtuelle est un moyen coûteux de le faire. Cependant, les comptables semblent parfois préférer les coûts opérationnels tels que la location, aux coûts d'investissement tels que les mises à niveau.


1
Je me rends compte que cette réponse ne concerne pas "l'accès au bélier sur le réseau" comme le demande l'OP. C'est plus comme accéder à un hôte distant qui a plus de RAM. Cependant, savoir comment les budgets fonctionnent à certains endroits peut être une solution valable pour faire le travail de manière financée.
Criggie

4

Comme d’autres l’ont dit, c’est techniquement possible mais ne vaut pas la peine.

Toutefois, si vous souhaitez accélérer l'utilisation de votre ordinateur, il est possible d'externaliser certaines de vos applications sur un serveur distant.

Cela dépendra principalement de ce sur quoi vous travaillez et de l'application que vous utilisez. Si vous exécutez des programmes nécessitant beaucoup de temps de traitement pour une petite sortie de données, vous pouvez les exécuter sur un serveur différent de celui de votre ordinateur afin d'économiser du temps et des ressources pendant que vous travaillez sur autre chose.

L'exemple que j'ai en tête est un serveur qui teste mon code chaque fois que je propose une modification. L’idée d’une telle solution est qu’elle se limite à des cas d’utilisation spécifiques.


4

Demandez au service informatique d'acheter plus de RAM pour votre PC et de démontrer la nécessité d'utiliser une capture d'écran de l'utilisation de l'application dans le Gestionnaire des tâches.


4
Solution pratique ... Même demander au service informatique de remplacer temporairement d'autres ordinateurs systèmes doit être une réponse "gratuite".
Xen2050

2
@ Xen2050 Pendant ce temps, votre collègue pleure parce que son système ne démarre plus.
Willtech

3
@Willtech, il est normal et approprié que le service informatique conserve des pièces de rechange, ainsi que des pièces de rechange de systèmes fonctionnant dans leur ensemble. Le temps d'arrêt est le coût réel.
Christopher Hostage

3

Il existe une solution commerciale à cela, via une société appelée Kove ( http://kove.net/) Cela nécessite une infrastructure Infiniband pour fonctionner sur le "fond de panier" (Ethernet fonctionne normalement), bien que d'autres options telles que RoCE puissent parfois être disponibles, en fonction des spécificités. Elles fournissent un certain nombre d'interfaces transparentes permettant une intégration sans changement de code et des API pour le contournement du noyau avec un accès plus direct au processeur (évitant ainsi une surcharge du noyau). En termes de performances, cela dépend de votre application. Si vous êtes lié au processeur, l'impact pourrait être minime (ce qui peut être surprenant). Si la bande passante mémoire est limitée sur l'hôte local, ils vous donneront une mémoire plus grande, mais vous serez limités par le goulot d'étranglement déjà existant. Dans ce cas, est-il avantageux pour la charge de travail d’avoir une mémoire plus grande que ce qui peut être mis dans une boîte, et ne pas manquer de RAM? Nous avons obtenu de très bons résultats avec les bibliothèques de virtualisation et d’apprentissage automatique python. Les applications HPC haut de gamme ont tendance à être plutôt pires, mais nous avons utilisé les API C et réussi à maintenir le niveau de performance acceptable tout en réduisant le nombre de nœuds (les nœuds étaient là pour la RAM, pas pour les cycles de processeur), ce qui est un avantage supplémentaire par rapport à MPI. . Il est difficile de savoir s'il s'agit d'une bonne solution pour votre collègue, mais c'est une option sur laquelle vous pouvez vous pencher. J'espère que ça t'as aidé. Pour être clair, je ne travaille pas pour Kove et je n’ai aucune incitation financière, mais je collabore avec eux depuis un certain nombre d’années et je pense que cette technologie pourrait avoir un impact considérable sur la manière dont l’informatique est réalisée. mais nous avons utilisé les API C et réussi à maintenir la performance au niveau des performances tout en réduisant le nombre de nœuds (les nœuds étaient là pour la RAM, pas pour les cycles de processeur), ce qui est un avantage supplémentaire par rapport à MPI. Il est difficile de savoir s'il s'agit d'une bonne solution pour votre collègue, mais c'est une option sur laquelle vous pouvez vous pencher. J'espère que ça t'as aidé. Pour être clair, je ne travaille pas pour Kove et je n’ai aucune incitation financière, mais je collabore avec eux depuis un certain nombre d’années et je pense que cette technologie pourrait avoir un impact considérable sur la manière dont l’informatique est réalisée. mais nous avons utilisé les API C et réussi à maintenir la performance au niveau des performances tout en réduisant le nombre de nœuds (les nœuds étaient là pour la RAM, pas pour les cycles de processeur), ce qui est un avantage supplémentaire par rapport à MPI. Il est difficile de savoir s'il s'agit d'une bonne solution pour votre collègue, mais c'est une option sur laquelle vous pouvez vous pencher. J'espère que ça t'as aidé. Pour être clair, je ne travaille pas pour Kove et je n’ai aucune incitation financière, mais je collabore avec eux depuis un certain nombre d’années et je pense que cette technologie pourrait avoir un impact considérable sur la manière dont l’informatique est réalisée.


Combien de gigaoctets de mémoire pouvez-vous acheter pour la configuration à bande infinie?
Joojaa

Oui, le principal problème ici est le fait qu'il parle de 8 Go de mémoire seulement et de 16 disques. Ce n'est pas "Comment utiliser le RAM à distance" mais "Pourquoi diable dois-je utiliser un système qui a des spécifications de 10 ans" .
TomTom

@jooja Nous avons 6 To. D'après ce que nous avons vu, nous n'avons pas vu de limite. Vous pouvez continuer à ajouter des appliances RAM distantes supplémentaires. Cela semble évoluer de manière assez linéaire, donc c'est un problème d'ingénierie / coût. Nous avons conçu un système 1PB une fois sur papier, mais nous ne pouvions évidemment pas l'utiliser pour le tester.
Bill

@ TomTom Je n'ai pas vu le commentaire à propos de 8 Go, mais oui, clairement, si nous parlons de 8 Go contre 16 Go de RAM, quelques K $ pour une nouvelle machine vont résoudre le problème.
Bill

Heck, pour quelques centaines de dollars, vous pouvez probablement mettre à niveau la RAM à 32 Go, à moins que la carte mère soit ridiculement ancienne et limitée.
moelleux

2

Un autre point de vue - le problème n'est peut-être pas la limite des ressources système, mais l'application inutile que votre ami écrit. 6 Go de RAM, c'est beaucoup de mémoire.

Le fait que beaucoup d’autres applications soient excessivement gonflées ne signifie pas nécessairement que l’application de votre ami doit en faire partie. L'utilisation de différentes méthodes de programmation peut réduire les besoins en mémoire tout en améliorant la vitesse. Par exemple, si l'application charge l'intégralité de l'ensemble de données en mémoire et que cela fonctionne, cela entraînera beaucoup plus de gaspillage que, par exemple, le stockage de données dans une base de données SQL (locale ou distante) avec peu d'index de sélection et l'accès à celle-ci. Faites-le traiter les données bloc par bloc si possible, au lieu de tout charger en une fois. Les structures en mémoire pourraient aussi être inutiles. Libérez de la mémoire quand vous en avez fini. Ne chargez pas dans la RAM ce que vous pouvez mapper en mémoire. Et des centaines d'autres astuces ...

Si l’application a toutefois besoin de plus de mémoire, qui peut être stockée sur d’autres ordinateurs, elle peut être modifiée pour utiliser memcached , etc. Des points bonus car ils évolueront mieux dans le futur.


5
6 Go de mémoire n'est pas énorme, selon l'application. Même les utilisateurs finaux font de la retouche photo (photoshop aime la RAM et un appareil photo haut de gamme enregistre des images de 64 mégapixels), de la retouche vidéo (BEAUCOUP pire), puis il y a un travail mathématique. Heck, même exceller utilisera volontiers quelques GB. Ce n'est pas tout le monde qui écrit des courriels, utilise Twitter et d'autres choses du même genre.
TomTom le

@TomTom Si vous avez besoin d'un traitement à mégapixels élevé, vous aurez des besoins en mémoire importants (de par la nature de la demande). Mais à moins que vous faites épissage du génome d'ADN dans votre feuille Excel et il est encore en utilisant deux Go de RAM, qu'il est exactement le genre de ballonnement et de la programmation bâclée que je parle. Vous savez, par exemple, votre budget à la maison était traité aussi rapidement (ou plus rapidement) dans Lotus 1-2-3 il y a quelques décennies sur des machines avec 3 ordres de grandeur de moins de RAM (et au moins des centaines de fois plus lentes) que votre Excel d'aujourd'hui.
Matija Nalis

1
Whow, quel anser ignorant. Je ne peux que supposer que vous n’avez que très peu d’expérience pour laquelle les gens utilisent Excel. Quand Microsoft a créé la version 64 bits d’Office, ils ont dit qu’elle n’était guère utile - SAUF pour Access et Excel, car certaines personnes (principalement des gestionnaires) exécutaient des analyses brutalement volumineuses via Excel, utilisant beaucoup de giga-octets de mémoire. La flexibilité d'Excel et son accessibilité pour les non-programmeurs en font un outil incontournable (les statisticiens ont tendance à être formés à l'utilisation de R). J'ai personnellement vu 200 feuilles Excel classées par des spécialistes des finances.
TomTom

Si votre budget à la maison prend beaucoup de temps à calculer dans Excel, vous êtes beaucoup plus riche que moi. Question intéressante sur Excel vs 1-2-3 - la boucle de calcul principale pourrait bien être plus rapide dans 1-2-3 car elle n’en fait pas autant. Mais sur une machine multi-core, Excel battra facilement 1-2-3. Et évidemment, les gigantesques feuilles d’épissage du génome ne s’ouvriront probablement pas en 1-2-3 à cause de la taille des feuilles. Dans un souci de transparence, je dois avouer que j’avais travaillé précédemment sur Excel avec l’équipe de base du calcul, de sorte que je risque d’être partial ...
Chris Rae

1

Donc, l'utilisateur a demandé comment partager la mémoire sur le réseau. Pas si c'est une bonne idée. Voici donc comment vous pouvez le faire.

Je ne dis pas que c'est une bonne idée, ou sera performant, mais ça devrait marcher.

  • Ordinateur 1 = "maître" - où le code est exécuté
  • Ordinateur 2 = "enfant" - donateur de mémoire

Je suppose que ce n'est pas Windows Server où vous pourriez créer un point de montage iSCSI.

Ordinateur 1 étapes:

  1. Téléchargez le disque virtuel gratuit de Dataram: http://memory.dataram.com/products-and-services/software/ramdisk
  2. Créer un disque mémoire et le formater avec NTFS - des instructions sont disponibles sur leur site
  3. Dans Disk Manager, créez un fichier VHD sur le disque virtuel formaté avec NTFS.
  4. Partagez le répertoire racine Ramdisk sur le réseau avec SMB - Cliquez avec le bouton droit sur le lecteur, partagez, partagez ce dossier.

Ordinateur 2 étapes:

  1. Mappez le lecteur partagé du répertoire sur un lecteur
  2. Montez le disque dur virtuel créé à l'étape 3 ci-dessus dans le Gestionnaire de disque.
  3. Déplacer l'emplacement du fichier de page local vers le disque dur virtuel monté via le déplacement du fichier de page Windows
  4. Supprimez toutes les autres entrées du fichier de page.

Terminé!

Mises en garde: vous pourrez peut-être ignorer le non-sens du disque dur virtuel si Windows vous permet de déplacer le fichier d'échange vers le partage réseau. Il n'y a pas beaucoup d'exemples de cela en ligne (pour des raisons évidentes).

Une instabilité complète du système peut survenir, ou quelque chose d'autre. Personne ne sait vraiment ce qui se passerait.


0

Comme vous parlez de «RAM» pour partager sur le réseau, pas simplement de «mémoire», la réponse finale sera théoriquement oui, pratiquement non.

Tandis que d’autres types de mémoire, comme le stockage et d’autres données temporaires, sont régulièrement partagés sur le réseau pour diverses raisons. De la même manière, la mémoire RAM peut être techniquement possible de partager sur le réseau si nécessaire. Mais les performances et les coûts seront trop élevés pour être réalisables dans le monde réel.

La RAM ou la mémoire à accès aléatoire est utilisée par un système d'exploitation comme espace de travail, ce qui lui permet d'effectuer de nombreuses opérations de lecture / écriture. Sur un système moyen, la capacité de vitesse de données avec la RAM est la plus élevée par rapport aux autres composants. Si vous mettez de la RAM sur un réseau, vous devez disposer d'une capacité de transfert de données à très haute vitesse et les coûts seront exorbitants, même si cela est techniquement possible. Avec une infime partie du coût d'une mise à niveau de la vitesse du réseau, vous obtiendrez de la RAM pour votre machine localement.


0

Les applications s'exécutent généralement en mémoire virtuelle. Par conséquent, leurs besoins en mémoire virtuelle peuvent dépasser la mémoire physique disponible du système sans autre conséquence que les performances. Le système d'exploitation sera tout simplement la page en mémoire virtuelle sur le disque pour libérer de la mémoire physique nécessaire à un moment donné pour une utilisation active. Cela fonctionne généralement très bien pour les applications ayant une localité raisonnable (l'activité est à tout moment centrée sur des zones limitées de l'espace mémoire virtuel de l'application). Si une application a une localité médiocre (référençant constamment la mémoire dans tout son espace virtuel), ses performances seront médiocres à moins que toute sa mémoire virtuelle ne puisse être hébergée dans une mémoire physique (toute sa mémoire virtuelle est résidente).

Donc, il y a quelques possibilités ici:

  • Si l'application a simplement une grande empreinte, mais une bonne localisation, vous devriez pouvoir l'exécuter sur l'ordinateur dont vous disposez. les performances peuvent être acceptables, peuvent ou non améliorer sensiblement sur un ordinateur disposant de plus de mémoire.
  • Si la localisation est mauvaise, vous constaterez peut-être qu’il fonctionnera de toute façon sur l’ordinateur disponible, mais très mal. (Cela semble être le cas pour vous)
  • Mettez à niveau le lecteur (supposé) de disque magnétique vers un lecteur à semi-conducteurs (ils sont nettement plus rapides)
  • Ajouter de la mémoire à l'ordinateur dont vous disposez (si possible)
  • Vous devrez peut-être trouver un ordinateur disposant de plus de mémoire et l'exécuter.
  • Améliorez l'application de sorte qu'elle ait une empreinte virtuelle plus petite ou une meilleure localité (si vous êtes ou êtes associé à l'auteur de l'application).

L'idée d'utiliser la mémoire sur un ordinateur distant est essentiellement la création d'un fichier de pagination en réseau . En théorie, cela peut fonctionner, mais en pratique, les performances seront bien meilleures si le fichier d'échange est local à l'ordinateur (son propre disque dur) en raison de la bande passante et de la latence du réseau. Peu importe que le système distant héberge le fichier d'échange dans sa mémoire ou sur son disque, le goulot d'étranglement (le limiteur de performances le plus important) sera le réseau. Cela sera particulièrement vrai sur Internet, mais également si l'ordinateur distant est adjacent au même réseau local.


Windows n'autorisera pas de fichier d'échange sur un lecteur réseau, donc même s'il serait assez rapide, cela ne peut tout simplement pas être fait.
Jamie Hanrahan

@JamieHanrahan Apparemment, vous pouvez le faire si vous modifiez le paramètre directement dans le registre. Je me demande si certains détails ont été exclus, car les lecteurs réseau sont définis par utilisateur sous Windows. Je soupçonne également que cela se cassera après un redémarrage.
ivan_pozdeev

1
Néanmoins, c'est une idée terrible, c'est pourquoi l'interface utilisateur l'interdit. Les connexions réseau ne sont pas suffisamment fiables pour faire confiance à la pagination. N'oubliez pas que beaucoup de données du noyau (pool paginé) peuvent être paginées. Si ce n'est pas accessible, même pour une très courte période, le système d'exploitation va planter.
Jamie Hanrahan

0

Cela dépend vraiment du type d'application utilisé et de l'utilisation du ram.

Par exemple, de nombreuses applications Web peuvent utiliser la RAM sur le réseau en se connectant à un memcachedserveur. Cela permettra de stocker les données en cache (et d’autres dont l’accès devrait être rapide) sur un autre ordinateur disposant de beaucoup de RAM.

Bien sûr, ceci est spécifique à l'application et nécessite une application qui puisse utiliser memcached. Cela ne vous aidera pas à ouvrir une seconde instance de slack car un navigateur ne prend pas en charge l'utilisation d'un tel back-end en cache.


-1

Au lieu de partager la RAM, il suffit de coder cette application pour créer un fichier .exe enfant , qui sera exécuté sur le PC réseau et fera de même sur ce PC.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.