동료가 시스템을 너무 느리게 만드는 많은 메모리를 소비하는 응용 프로그램을 사용하고 있습니다. 인터넷을 통해 다른 PC와 메모리를 공유 할 수 있습니까?
시스템에는 8GB의 RAM이 있으며 응용 프로그램은 6GB 이상을 소비합니다.
동료가 시스템을 너무 느리게 만드는 많은 메모리를 소비하는 응용 프로그램을 사용하고 있습니다. 인터넷을 통해 다른 PC와 메모리를 공유 할 수 있습니까?
시스템에는 8GB의 RAM이 있으며 응용 프로그램은 6GB 이상을 소비합니다.
답변:
다른 곳에 설치하거나 전문 하드웨어 또는 소프트웨어를 사용할 수없는 "표준"시스템에서 실행되는 독립형 응용 프로그램 만 고려했습니다. 다른 답변은 소프트웨어 마이그레이션 또는 작업 전용 하드웨어를 올바르게 해결합니다.
네트워크를 통해 "RAM 공유"방법은 해당 네트워크 매체의 제한을받습니다. 기가비트 이더넷조차도 약 100MB / s (메가 바이트)로 제한되므로 "RAM"속도도 제한됩니다.
100MB / s는 실제로 시스템에있는 RAM 속도의 작은 부분입니다. 프로그램은 고통스럽게 느리고 90 년대 초반부터 컴퓨터에서 실행되는 것처럼 느껴집니다.
최신 하드 드라이브는 순차 읽기 및 쓰기를 위해 이보다 약간 빠릅니다. SSD는 몇 배 더 빠릅니다.
이것은 대기 시간 문제를 무시하여 프로그램의 크기를 다시 느리게 만듭니다.
속도 저하 및 기타 기술적 문제로 인해 "가정"또는 "사무실"시스템을 해결하려고 시도 할 가치가있는 사람은 아닙니다. 필요한 경우 더 많은 RAM을 구입하는 것이 더 저렴하고 효과적입니다.
RAM을 추가하거나 페이지 파일 용 SSD를 구입하십시오. 이 작업을 수행하는 다른 방법은 별다른 이점없이 엄청난 양의 작업이나 하드웨어가 필요하지 않습니다.
완전성을 위해 InfiniBand 는 다른 머신의 메모리에 직접 액세스 할 수 있습니다.
그러나 다음이 필요합니다.
기존 네트워크에서는 작동하지 않으며 연결된 모든 노드에 대해 완전히 독립적 인 인프라가 필요합니다. 또한 인터넷을 통해 작동하지 않습니다
Is there any alternative solution?
이것은 데이터의 특성에 크게 의존합니다.
2 개의 다른 머신에서 2 개의 다른 mysql 서버를 실행할 수 있습니다.
그런 다음 데이터를 1/2로 나누고 프로그램을 작성하여 어느 서버로 갈지 자동으로 파악하십시오.
물론 사용 가능한 서버 수에 관계없이이 서버를 확장 할 수 있습니다.
예, Network Block Device 프로토콜을 사용하면 합리적으로 쉽습니다 (스왑이 필요한 디스크가없는 시스템의 경우).
nbd-server
서버 시스템에 설치 하고 호스트 별 파일을 자동 작성하도록 구성하십시오.
클라이언트 시스템이 커널로 NBD를 컴파일했는지 확인한 다음 NBD 마운트 장치로 스왑하도록 구성하십시오. nbd-client
패키지가 도움 이 될 수 있습니다.
위의 내용이 약간 모호한 경우 죄송합니다.이 작업을 수행 한 컴퓨터는 여기에서 연결할 수 없습니다. 세부 정보에 액세스 할 때 세부 정보를 입력 할 수 있습니다.
대체 NBD 서버 구현이 있습니다 nbdkit
. 나는 그것에 대해 아무것도 모른다.
작고 중요하지 않은 세부 사항 인 "Windows 10, 워크 스테이션에는 8G B RAM이 있습니다" 라는 사실을 감안할 때 실제로 더 많은 RAM을 구입하고 쓰레기를 줄이십시오.
SSD를 구입하고 페이지 파일을 넣으면 차선책이 될 수 있지만 실제로는 더 많은 RAM을 구입할 수 있습니다.
네트워크를 통해 페이지 파일 ( "공유 메모리")을 제공하는 것은 물론 가능하지만 매우 나쁜 생각입니다. 네트워크를 통한 액세스 시간이 로컬 드라이브에 액세스하는 것보다 낫다는 경계 사례가있는 것은 사실이지만, 일관된 낮은 액세스 시간 과 높은 대역폭이 동시에 필요하기 때문에 사용 사례와 관련이 없습니다 . 하나 또는 두 개의 페이지 결함을 예상하지 않고 지속적으로 교체하고 있음을 기억하십시오. 몇 천 달러를 기꺼이 지불하지 않으면 RAM이나 SSD를 구매할 수있는 곳이 없습니다.
8GB는 Windows 10 과 메모리 부족 응용 프로그램을 동시에 실행하기에 충분하지 않습니다 . Word, Excel 및 Outlook을 동시에 실행하기에는 충분하지 않습니다. 그것은 수백만의 사람들이 매일 자신의 업무용 랩톱에서 살아야하는 완전히 사용 불가능한 "총 헛소리 회사 설정" 입니다. 다른 메모리 모듈에 100-200 통화를 투자하면 일주일 이내에 비용을 절감 할 수 있습니다 (현재 몇 분이 걸리고 시간이 걸리는 데 시간이 오래 걸리는 경우도 있습니다)-불행히도 종종 현지 콩 카운터에 들어가기가 어렵습니다.
또는 컴퓨터를 소유 한 경우 NTLite를 사용하여 Windows 10 쓰레기를 줄이고 메모리 사용 공간을 줄일 수 있습니다. 또는 대부분 불필요한 서비스의 80 %를 끌 수도 있습니다. 믿을 수없는 것처럼 보이지만 2GB 미만의 RAM을 사용하여 최신 버전의 Windows를 실행할 수 있습니다 .
그러나 실제로 RAM 만 구매 하면 Windows 쓰레기를 줄이는 데 귀중한 시간을 보내는 것보다 훨씬 빠르고 쉽습니다.
간단한 대안은 원격 PC에서 응용 프로그램을 전용 사용자 계정으로 실행하고 RDP, VNC 또는 기타 편리한 방법으로 제어하는 것입니다.
또 다른 옵션은 램을 쉽게 확장 또는 축소 할 수있는 환경에 응용 프로그램을 임시로 배포하는 것입니다.
재부팅 한 번으로 크기를 변경할 수있는 Amazon AWS 인스턴스를 살펴 보겠습니다.
IE C5.large와 같은 작은 인스턴스에는 4GB 램과 2 코어가 있으며 Linux의 경우 하루에 $ 2.04 USD, Windows 설치의 경우 하루에 $ 4.26 USD입니다. EBS 디스크 공간은 추가 비용이며 할당 된 GB에 따라 선형으로 확장됩니다.
이 작은 크기로 시스템을 설정 한 다음 최대 소음을 발생 시키려면 시스템을 중지하고 인스턴스 크기를 변경 한 후 소프트웨어를 실행하십시오.
아니면 가장 큰 것 ...
https://www.ec2instances.info/ 는 적절한 크기를 선택하는 데 도움이됩니다. 일부 지역은 다른 지역보다 비용이 많이 듭니다. 싱가포르와 캘리포니아 북부는 비싸다. 그러나 VM이 실행되지 않을 때 디스크 스토리지 비용 외에는 비용이 들지 않습니다.
단점은이 메모리가 오랫동안 필요한 경우 VM 시간을 구입하는 것이 비용이 많이 드는 방법이라는 것입니다. 그러나 회계사는 때로는 임대와 같은 운영 비용을 업그레이드와 같은 자본 비용보다 선호하는 것 같습니다.
다른 사람들이 말했듯이 기술적으로 가능하지만 가치가 없습니다.
그러나 컴퓨터 사용 속도를 높이려면 일부 응용 프로그램을 원격 서버로 외부화 할 수 있습니다.
이것은 주로 작업중인 작업과 사용중인 응용 프로그램에 따라 다릅니다. 작은 데이터 출력에 많은 처리 시간이 필요한 프로그램을 실행하는 경우 컴퓨터와 다른 서버에서 실행하여 다른 작업을 수행하는 동안 시간과 리소스를 절약 할 수 있습니다.
내가 생각하는 예는 수정을 할 때마다 코드를 테스트하는 서버입니다. 이러한 솔루션의 아이디어는 특정 사용 사례로 제한된다는 것입니다.
IT 부서에 PC 용 RAM을 추가로 구매하도록 요청하고 작업 관리자에서 앱 사용 스크린 샷을 사용하여 필요성을 설명하십시오.
Kove ( http://kove.net/) 를 통해 상용 솔루션이 있습니다.). "백플레인"(이더넷은 정상적으로 작동)에서 작동하려면 Infiniband 인프라가 필요하지만, 세부 사항에 따라 RoCE와 같은 다른 옵션을 사용할 수도 있습니다. 코드 변경없이 통합 할 수있는 여러 가지 투명한 인터페이스와보다 직접적인 CPU 액세스를 통한 커널 우회 API (예 : 커널 오버 헤드 방지)를 제공합니다. 성능면에서 응용 프로그램에 따라 다릅니다. CPU가 바인드 된 경우 영향이 최소화 될 수 있습니다 (놀랍습니다). 로컬 호스트에 바운드 된 메모리 대역폭 인 경우 더 큰 메모리를 제공하지만 기존 병목 현상으로 인해 제한을받습니다. 이 경우 작업 부하가 상자에 넣을 수있는 것보다 더 큰 메모리를 갖는 것이 유리합니다. RAM이 부족하지 않습니까? 우리는 가상화 및 파이썬 머신 러닝 라이브러리에서 (매우) 좋은 결과를 보았습니다. 고급 HPC 응용 프로그램은 상당히 나빠지는 경향이 있지만 C API를 사용하여 성능을 계속 유지하면서 노드 수 (CPU주기가 아닌 RAM에 대한 노드)를 줄이면서 MPI와 비교하여 플러스였습니다. . 이것이 동료에게 적합한 솔루션인지 여부는 말하기 어렵지만 살펴볼 수있는 옵션입니다. 희망이 도움이됩니다. 분명히, 나는 Kove에서 일하지 않고 재정적 인센티브가 없지만 수년 동안 그들과 협력 했으며이 기술이 특정 컴퓨팅 수행 방식에 실질적으로 영향을 줄 수 있다고 생각합니다. 그러나 우리는 C API를 사용하고 성능을 계속 유지하면서 노드 수 (CPU주기가 아닌 RAM에 대한 노드 수)를 줄였습니다. 이는 MPI와 비교하여 플러스입니다. 이것이 동료에게 적합한 솔루션인지 여부는 말하기 어렵지만 살펴볼 수있는 옵션입니다. 희망이 도움이됩니다. 분명히, 나는 Kove에서 일하지 않고 재정적 인센티브가 없지만 수년 동안 그들과 협력 했으며이 기술이 특정 컴퓨팅 수행 방식에 실질적으로 영향을 줄 수 있다고 생각합니다. 그러나 우리는 C API를 사용하고 성능을 계속 유지하면서 노드 수 (CPU주기가 아닌 RAM에 대한 노드 수)를 줄였습니다. 이는 MPI와 비교하여 플러스입니다. 이것이 동료에게 적합한 솔루션인지 여부는 말하기 어렵지만 살펴볼 수있는 옵션입니다. 희망이 도움이됩니다. 분명히, 나는 Kove에서 일하지 않고 재정적 인센티브가 없지만 수년 동안 그들과 협력 했으며이 기술이 특정 컴퓨팅 수행 방식에 실질적으로 영향을 줄 수 있다고 생각합니다.
또 다른 관점-문제는 시스템 리소스의 제한이 아니라 친구가 작성하는 낭비되는 응용 프로그램입니다. 6GB의 RAM은 많은 메모리입니다.
다른 응용 프로그램의 대부분은 지나치게이다해서 부풀어 , 반드시 당신의 친구 응용 프로그램이 그 중 하나가 될 필요가 의미 않습니다. 다른 프로그래밍 방법을 사용하면 메모리 요구 사항을 줄이면서 속도를 향상시킬 수 있습니다. 예를 들어, 앱이 전체 데이터 세트를 메모리에로드 한 다음 작동하는 경우 선택 인덱스가 거의없는 (로컬 또는 원격) SQL 데이터베이스에 데이터를 저장하고 해당 데이터에 액세스하는 것보다 훨씬 낭비가됩니다. 가능하면 데이터를 한 번에로드하지 않고 블록별로 처리하십시오. 인 메모리 구조도 낭비 될 수 있습니다. 완료되면 사용 가능한 메모리가 확보됩니다. 메모리 맵 대신 RAM에로드하지 마십시오. 그리고 다른 수백 가지 팁 ...
그러나 응용 프로그램에 실제로 다른 컴퓨터에 저장해야 할 메모리가 더 필요한 경우 memcached 등 을 사용하여 메모리를 저장하도록 수정할 수 있습니다 . 향후 더 나은 확장을위한 보너스 포인트.
따라서 사용자 는 네트워크를 통해 메모리를 공유 하는 방법 을 요청했습니다 . 좋은 생각이라면 아닙니다. 실제로 여기에 어떻게 할 수 있습니까?
나는 이것이 좋은 생각, 또는 성능이 좋은 것 말하는 게 아니에요,하지만 해야 작동합니다.
iSCSI 마운트 지점을 만들 수있는 Windows Server가 아니라고 가정합니다.
컴퓨터 1 단계 :
컴퓨터 2 단계 :
끝난!
주의 사항-Windows에서 페이지 파일을 네트워크 공유로 이동할 수 있으면 VHD 넌센스를 건너 뛸 수 있습니다. 이 온라인에 대한 예는 많지 않습니다 (명백한 이유로).
완전한 시스템 불안정성이 발생하거나 완전히 다른 문제가 발생할 수 있습니다. 어떤 일이 일어날 지 아무도 모른다.
어떤 종류의 "메모리"만이 아니라 네트워크를 통한 공유를위한 "RAM"을 언급 할 때, 최종적으로 대답은 이론적으로 그렇습니다.
스토리지 및 기타 임시 데이터와 같은 다른 유형의 메모리는 다양한 목적과 이유로 네트워크를 통해 정기적으로 공유됩니다. 같은 방식으로 RAM은 기술적으로 필요한 경우 네트워크를 통해 공유 할 수 있습니다. 그러나 성능과 비용은 현실 세계에서 실현하기에는 너무 높습니다.
RAM 또는 랜덤 액세스 메모리는 운영 체제에서 작업 공간으로 사용되므로 많은 읽기 / 쓰기 작업이 수행됩니다. 평균 시스템에서 RAM이있는 데이터 속도 용량은 다른 부품에 비해 가장 높습니다. RAM을 네트워크에 배치하는 경우 매우 빠른 데이터 전송 용량이 필요하며 기술적으로 달성하기 위해 가능하더라도 비용이 많이 듭니다. 네트워크 속도 업그레이드 비용의 작은 부분만으로도 컴퓨터의 RAM이 로컬로 제공됩니다.
응용 프로그램은 일반적으로 가상 메모리에서 실행되므로 가상 메모리 요구 사항은 성능 이외의 다른 결과없이 시스템의 사용 가능한 실제 메모리를 초과 할 수 있습니다. 운영 체제는 가상 메모리를 디스크로 페이징 하여 활성 순간 사용에 필요한 순간에 물리적 메모리를 확보합니다. 이것은 일반적으로 합리적인 지역성 을 가진 응용 프로그램에 적합합니다 (어느 때나 활동은 응용 프로그램의 가상 메모리 공간의 제한된 영역에 다소 집중되어 있습니다). 응용 프로그램의 로컬 성이 열악한 경우 (가상 공간 전체에서 메모리를 지속적으로 참조하는 경우) 모든 가상 메모리를 실제 메모리에 수용 할 수없는 경우 (모든 가상 메모리가 상주) 성능이 저하됩니다.
여기 몇 가지 가능성이 있습니다.
원격 컴퓨터에서 메모리를 사용한다는 아이디어는 기본적으로 네트워크 페이징 파일을 만드는 것 입니다. 이론적으로는 작동 할 수 있지만 실제로는 페이징 파일이 네트워크 대역폭 및 대기 시간으로 인해 컴퓨터 (자체 하드 드라이브)에 로컬 인 경우 성능이 훨씬 향상됩니다. 원격 시스템이 페이징 파일을 메모리 나 디스크에서 호스팅하는지 여부는 중요하지 않습니다. 병목 현상 (가장 큰 성능 제한)이 네트워크가됩니다. 이것은 인터넷을 통해 특히 사실이지만, 원격 컴퓨터가 동일한 LAN에 인접하더라도 마찬가지입니다.
이것은 실제로 응용 프로그램의 유형과 사용되는 램에 따라 다릅니다.
예를 들어 많은 웹 응용 프로그램은 memcached
서버 에 연결하여 네트워크를 통해 RAM을 사용할 수 있습니다 . 이렇게하면 많은 RAM이있는 다른 컴퓨터에 캐시 데이터 (및 빠르게 액세스해야하는 다른 데이터)를 저장할 수 있습니다.
물론 이것은 응용 프로그램에 따라 다르며 memcached를 사용할 수있는 응용 프로그램이 필요합니다. 브라우저가 이러한 캐시 백엔드 사용을 지원하지 않기 때문에 슬랙의 두 번째 인스턴스를 여는 데 도움이되지 않습니다.