RAM은 싸고 SSD보다 훨씬 빠릅니다. 그것은 단지 휘발성입니다. 그렇다면 컴퓨터에 많은 양의 RAM이없고 전원이 켜진 상태에서 하드 드라이브 / SSD에서 RAM으로 모든 것을로드하고 실제로 메모리 외부에 아무것도 유지할 필요가 없다고 가정하면 거기에서 모든 것을 실행하는 이유는 무엇입니까? 컴퓨터가 훨씬 빠르지 않습니까?
물론 현재 운영 체제는이를 지원하지 않을 수 있지만 RAM이 이런 식으로 사용되지 않는 이유가 있습니까?
RAM은 싸고 SSD보다 훨씬 빠릅니다. 그것은 단지 휘발성입니다. 그렇다면 컴퓨터에 많은 양의 RAM이없고 전원이 켜진 상태에서 하드 드라이브 / SSD에서 RAM으로 모든 것을로드하고 실제로 메모리 외부에 아무것도 유지할 필요가 없다고 가정하면 거기에서 모든 것을 실행하는 이유는 무엇입니까? 컴퓨터가 훨씬 빠르지 않습니까?
물론 현재 운영 체제는이를 지원하지 않을 수 있지만 RAM이 이런 식으로 사용되지 않는 이유가 있습니까?
답변:
RAM이 그런 식으로 사용되지 않는 데는 몇 가지 이유가 있습니다.
그렇습니다. RAM 디스크가 존재합니다. 심지어 같은 DIMM 소켓과 PCI 보드 와 매우 높은 IOPS를위한 제품으로. (SSD가 옵션이되기 전에 회사 데이터베이스에서 주로 사용됨). 이 물건은 싸지 않다 .
다음은 프로덕션으로 만든 저사양 RAM 디스크 카드의 두 가지 예입니다.
공통 작업 메모리에 RAM 디스크 를 작성하는 것보다 더 많은 방법이 있습니다.
당신은 할 수 있습니다 :
Amiga RAD에서 남은 RAM 디스크를 IOPS로 재설정하고웨어 레벨링을 수행하고 Gd가 무엇을 알고 있는지 더 잘 설명 할 수 있습니다. 그러나 나는 이것을 짧게 자르고 항목을 하나 더 나열합니다.
DDR3 (현재 DRAM) 가격 대 SSD 가격 :
운영 체제는 이미 페이지 캐시를 사용하여이를 수행 합니다 .
컴퓨팅에서 페이지 캐시 (디스크 캐시라고도 함)는 빠른 액세스를 위해 운영 체제에서 주 메모리 (RAM)에 보관 한 디스크 백업 페이지의 "투명한"캐시입니다. 페이지 캐시는 일반적으로 페이징 메모리 관리를 사용하여 커널로 구현되며 응용 프로그램에 완전히 투명합니다.
디스크에서 페이지를 읽을 때 운영 체제는 해당 데이터를 메모리에로드하고 해당 메모리를 더 잘 사용할 수있을 때까지 그대로 둡니다. 메모리가 충분하면 OS는 각 페이지를 한 번만 읽은 다음 메모리에서 사용합니다. OS가 실제 디스크 IO를 수행하는 유일한 이유는 아직 메모리에없는 페이지를 읽어야하거나 페이지가 기록 된 경우 (이 경우 디스크에 저장하려는 경우)입니다.
이러한 방식으로 작업을 수행하는 한 가지 이점은 전체 하드 드라이브를 메모리에로드 할 필요가 없다는 것입니다. 이는 적합하지 않은 경우에 유용하며 응용 프로그램에없는 파일을 읽는 데 시간을 낭비하지 않음을 의미합니다 필요한 것. 또 다른 장점은 OS에 더 많은 메모리가 필요할 때마다 캐시를 버릴 수 있다는 것입니다 (메모리가 부족하여 프로그램이 충돌하는 것보다 다음 디스크를 약간 느리게 읽는 것이 좋습니다). 또한 사용자가 램 디스크에 무엇이 있어야하는지 수동으로 결정할 필요가없는 것이 유용합니다. 가장 자주 사용하는 것은 자동으로 주 메모리에 보관됩니다.
메모리가 많지만 응용 프로그램이 예상대로 빨리 실행되지 않으면 안전하게 실행되므로 속도가 느려질 가능성이 큽니다. 예를 들어, 쓰기가 완료 될 때까지 기다리지 않으면 SQLite의 속도가 훨씬 빨라지지만 완전히 종료하지 않으면 데이터베이스가 완전히 손상됩니다.
또한 /tmp
Linux 배포판에서 일반적으로 램 디스크입니다. 데이터가 손실되면 괜찮습니다. 데이터가 너무 많이 기록되면 /tmp
메모리가 부족할 수 있기 때문에 좋은 아이디어인지에 대한 논쟁이 여전히 남아 있습니다.
Alan Shutko가 질문에 대한 의견에서 지적한 것처럼 RAM은 실제로 저렴하지 않습니다.
다음은 몇 가지 데이터 요소입니다. Google에서 4GB RAM, 64GB SSD 및 1TB HDD (기계식 하드 드라이브)를 검색 할 때 비용은 다음과 같습니다 (2013 년 8 월 25 일 기준).
4GB RAM = $ 32-$ 36 => RAM = GB 당 ~ $ 8
64GB SSD = $ 69-$ 76 => SSD = GB 당 ~ $ 1
1TB HDD = $ 80 => HDD = GB 당 $ 0.08
우와! HDD는 RAM보다 100 배 저렴합니다! SSD는 RAM보다 8 배 저렴합니다.
또한 다른 답변에서 지적했듯이 RAM은 본질적으로 휘발성이므로 다른 형태의 영구 저장소가 필요합니다.
로컬 컴퓨터의 RAM 디스크에서 콘텐츠 생성을위한 모든 즉각적인 읽기 / 쓰기 작업을 수행합니다. 또한 내 MongoDB 저널링 폴더와 컴파일러, Python 인터프리터 및 표준 라이브러리를 저장합니다. 이 디스크는 종료시 저장되고 시작시 복원됩니다. 내가 사용하는 두 번째 RAM 디스크는 64MB이며 모든 인터넷 브라우저의 캐시 폴더가 여기에 있습니다. 종료시 손실되고 가득 차면 플러시됩니다.
내가 생각하는 직업에 맞는 도구를 사용하십시오. 7200rpm Western Digital보다 RAM 디스크를 사용하여 30-1000 배 더 빠르게 데이터를 생성하고 있습니다.
이것은 내가 사용하는 프로그램입니다 : http://www.romexsoftware.com/en-us/primo-ramdisk/
... 램 32 기가가 200 달러 미만일 때 왜 이것이 더 일반화되지 않는지 알 수 없습니다.
간단한 설명 :
응용 프로그램을 처음 실행하면 하드 디스크 나 네트워크에서 RAM으로 전송됩니다. 따라서 걱정하지 마십시오. 이미하고 있습니다.
그러나 일반적으로 응용 프로그램 / 프로세스 파일이 하나뿐 아니라 하드 디스크 또는 네트워크를 대상으로하는 일부 I / O 작업 (응용 프로그램의 다른 파일 또는 시스템의 기타 I / O 작업 등)이있어 신청. 이것들은 RAM 디스크로 향할 수 있지만, 전원을 끄면 RAM 디스크가 삭제되고 시작시 다시 채워 져야한다는 것을 고려해야합니다.
그리고 RAM은 질문에 제시된 것처럼 저렴하지 않습니다. 전원이 꺼질 때 RAM 비용뿐만 아니라 마더 보드의 소켓 (제한된 / 희귀하므로 더 가치있는)과 손실 된 데이터 비용을 포함하여 작동하는 RAM의 비용을 계산해야합니다.
예를 들어 1TB HDD가 장착 된 컴퓨터는 저렴하게 구입할 수 있으며 가정용 컴퓨팅, 1TB RAM이 장착 된 컴퓨터는 슈퍼 컴퓨터 범위에 있습니다. (그러나 인텔은 중간 범위의 무언가를 연구하고 있습니다 : http://vr-zone.com/articles/more-on-xeon-e5-terabyte-of-ram-even-at-midrange-/14366.html )
이것은 위대한 질문이며 나는 그 답이 매력적이라고 생각합니다. Oracle DBA로 이것에 대해 언급하고 대답은 Oracle 데이터베이스에 특정합니다. 이것은 많은 사람들이 Oracle과 작업 할 때 저지르는 중대한 실수입니다. 이것이 다른 응용 프로그램에도 적용되는지 확실하지 않습니다. 이는 주제를 벗어난 것이 아니라 전문적인 답변입니다.
Oracle을 사용하여 성능을 조정할 때 실제로 병목 현상을 해결하려고합니다. 우리 대부분은 그것을 말하지 않지만, 그것은 제약 이론에 근거합니다 : https://en.wikipedia.org/wiki/Theory_of_constraints
메모리가 병목 현상이 아닐 수 있습니다. 오라클은 메모리 관리를위한 복잡한 메커니즘을 가지고 있으며 병목 현상이 발생하는 다른 영역이있는 경우 메모리를 늘리면 실제로 속도가 느려질 수 있습니다. 매우 일반적인 예를 하나 보여 드리겠습니다.
쿼리 속도가 느린 것 같습니다. RAM을 늘리면 메모리가 디스크보다 빠르기 때문에 쿼리의 응답 시간을 늘려야합니다. 음 ... 이것이 오라클이 데이터에 대한 메모리 관리를 처리하는 방법입니다. Oracle에는 특정 업무에 할당 된 다양한 메모리 위치가 있습니다. 그래서 당신은 이러한 기억을 증가시킬 수 있습니다. 데이터에 사용되는 영역을 '버퍼 캐시'라고합니다. 이것은 일련의 링크 된 목록입니다 (각 버전에 따라 그 수가 증가하는 경향이 있습니다). 쿼리 중에 디스크에서 블록이 발견 될 때마다 해시 알고리즘이 실행되어 어떤 목록을 고칠 지 결정합니다. 목록에 넣을 위치는 터치 카운트 알고리즘 (Oracle 지원 사이트, 그래서 당신은 그것을 얻기 위해 지불해야합니다 ... 그것은 중요하지 않습니다).
그러나 쿼리를 실행할 때 Oracle은 검색 한 버퍼 체인에서 래치를 가져옵니다. 이 래치 (참고 : 잠금은 아닙니다. 차이를 모르는 경우 Google "래치")는 읽은 기간 동안 해당 체인의 다른 모든 작업을 차단합니다. 따라서 읽기 및 쓰기를 차단합니다 (이것은 잠금이 읽기를 차단하지 않는다고 주장하는 Oracle과 완전히 다릅니다).
체인에서 블록을 읽을 때 Oracle은 '요청'빈도에 따라 블록을 이동하기 때문에 필요합니다. 더 자주 요청되는 블록이 맨 위로 이동하고 덜 자주 요청 된 블록이 맨 아래에 남아 있고 만료됩니다. 링크 된 목록을 읽고 블록을 이동하는 2 개의 세션을 가질 수 없거나 존재하지 않는 위치를 가리키는 포인터에 부딪치게됩니다.
메모리 크기를 늘리면 연결된 각 목록의 크기가 늘어납니다. 목록을 읽는 데 걸리는 시간이 늘어납니다. 단일 불량 쿼리 또는 복잡한 쿼리는 링크 된 목록에 대해 수만 또는 수백만 건의 읽기를 수행 할 수 있습니다. 각 읽기는 빠르지 만 그 수는 래치를 가져오고 다른 세션을 차단합니다. 오라클은이를 '논리적 IO'(또는 버퍼 가져 오기 또는 기타 요소)라고 부릅니다.이 용어는 Oracle에만 해당되며 IT의 다른 부분에서는 다른 의미를 가질 수 있습니다.
따라서 목록이 길고 SQL이 실제로 나쁜 경우 SQL 문은 래치를 더 오래 보유합니다. 메모리를 늘리면 성능이 저하 될 수 있습니다. 대부분의 경우 이런 일이 발생하지 않습니다. 사람들은 많은 돈을 쓰고 혜택을 보지 못할 것입니다. 즉, 버퍼 캐시에 더 많은 메모리가 필요할 때가 있지만 병목 현상을 적절히 식별하여 이것이 적절한 지 알아야합니다. 이 게시물에서 이것을 분석하는 방법에 대해 논의 할 수 없습니다. DBA 포럼을 참조하십시오. 어떤 사람들은 그곳에서 그것을 토론합니다. 다소 복잡합니다.
이 문제가 발생할 수있는 다른 소프트웨어 조각에 대한 구체적인 예가 있습니까? 공장의 제약 완화에 대해 설명하는 '목표'라는 훌륭한 비즈니스 서적이 있습니다. 이 프로세스는 성능 문제를 평가할 때 Oracle DBA가하는 것과 매우 유사합니다. 종종 MBA 프로그램에서 표준 읽기입니다. IT 전문가를 위해 읽는 것이 매우 중요합니다.
RAM은 저렴하지만 기존 스토리지만큼 저렴하지는 않습니다.
3TB 하드 드라이브 ($ 99)가 있습니다 : HDD 견적
그리고 3TB 당 각각 (719 달러)에 48 개가 필요합니다. RAM 견적
그것은 총 $ 34,512 대 $ 99입니다. 3TB의 RAM을 실행하는 데 필요한 하드웨어 가격은 말할 것도 없습니다.
실제로 일부 시나리오에서 수행됩니다. 운영 체제 / 앱 스택이 충분히 작 으면 RAM에서 완전히 실행할 수 있습니다. 물론 그것은 받아 들인 대답이 가지고있는 모든 단점을 가지고 있습니다. 그러나 가능하고 일어납니다.
인기있는 Linux 배포판 인 Puppy Linux를 살펴보십시오. 작동 방식 페이지에서 RAM 실행에 대한 설명 : http://puppylinux.org/wikka/howPuppyWorks
대답은 부분적으로 다음과 같이 대답 할 수 있다고 생각합니다.
전제:
제한된 수의 메모리 슬롯이 주어지면 중요한 솔루션은 더 작은 내부 크기 및 / 또는 3D 스태킹을 가진 더 높은 메모리 칩 형태로 제공됩니다. 두 프로세스 모두 지난 36 개월 이상 예상대로 진행되었습니다.
따라서 질문은 " DDR3 최대 메모리 크기 "또는 의미 적으로 " DDR3 왜 16GB보다 큰 메모리 모듈이 없는지 "
대답은 다음과 같습니다.
DDR3 표준 효과적으로 16기가바이트 최대 메모리 모듈 크기 있도록 512 메가 비트 내지 8 기가비트의 칩 용량을 허용 ( SRC를 )
이 기술 맵에 요약 된대로 DDR4가이를 변경합니다.
결과:
Hennes의 철저한 게시물에 대한 몇 가지주의 사항 :
pkr298
전체 OS 및 프로그램이 RAM에로드 된 것으로 가정하고 하드 드라이브 / SSD를 폐지해야한다고 가정하지 않습니다당신은 실제로 옳습니다 가까운 장래에 모든 저장 장치와 메모리는 나노 램 형태입니다. NRAM은 기본적으로 몇 개의 원자 폭을 가진 "기계적"스위치이며, 상태를 유지하기 위해 전류가 필요하지 않으므로 에너지 효율적이며 냉각 될 필요가 없으며 스위치가 너무 작아 밀도가 매우 높고 이것은 두 가지 이유로 좋습니다. 하나는 메모리에 대한 액세스가 매우 빠르기 때문에 휴대폰과 같은 작은 장치에서 테라 바이트 단위의 데이터를 가질 수 있다는 것입니다. 자세한 내용을 보려면 다음을 참조하십시오 : http://www.nantero.com/mission.html 및 http://en.wikipedia.org/wiki/Nano-RAM
다른 사람들이 말했듯이 RAM은 휘발성이며 SSD 비용의 10 배와 같습니다.
그러나, IS 는 설명하는지에 아주 가까이 온다 거기 제품은 - 불행하게도 내가 이름을 기억하지 수 있습니다.
CF 카드 및 배터리와 결합 된 RAM 기반 드라이브 (IIRC max 64gb)입니다. 시스템을 켜면 CF 카드의 내용이 RAM에 복사됩니다 (아직로드되지 않은 경우 CF 카드의 요청을 처리한다고 생각합니다.) 종료시 RAM의 내용이 CF 카드에 복사됩니다. -배터리는 방전되기 전에 완료 될 수있을만큼 충분히 큽니다.
싸지 않다.