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.
windows
networking
memory
Innov
la source
la source
Réponses:
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.
la source
Juste pour être complet: InfiniBand permet un accès direct à la mémoire d’autres machines.
Cependant, il nécessite:
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
la source
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.
la source
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-server
sur 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-client
paquet 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.la source
É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.
la source
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.
la source
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.
Ou le plus gros ...
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.
la source
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.
la source
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.
la source
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.
la source
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.
la source
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.
Je suppose que ce n'est pas Windows Server où vous pourriez créer un point de montage iSCSI.
Ordinateur 1 étapes:
Ordinateur 2 étapes:
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.
la source
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.
la source
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:
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.
la source
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
memcached
serveur. 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.
la source
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.
la source