읽기 전용 환경이라고 가정하면, 램디스크에 마운트에서 쓰는것이 효과가 있을까요?

s_jeho의 이미지


예전에 postgres 를 램디스크에 마운트하고 테스트한것을 본적이 있습니다.
테스트 결과 readonly 상황에서는 아주 좋은 성능을 보여줬지만
기타의 상황에서는 빠른 읽기/쓰기의 하드디스크가 더 낫더군요

최근에 몇몇 지인들과 같이 보자는 식으로 영화를 서버에 올려놓고있는데,
생각해보니 이걸 긁어대는게 장난이 아닐거란 생각을 했습니다.

램용량이 충분해서 이걸 램디스크로 마운트해서 올려놓는다면,
읽기전용의 상황이니 하드 긁을일은 없다고 생각하는데, 실제로 이렇게(혹은 비슷하게)
램디스크를 사용해서 부하를 줄여보신분이 계신지요?

ironiris의 이미지

맞는 상황은 아니지만 웹서비스 운영시 자잘한 이미지 파일을 램디스크로 올리고 서비스 한것과
그냥 서비스를 한 것과 큰 차이를 보이지 않았다고 하더군요.(물론 다른 상황이 벌어질수도 있구요)
원인은 HDD의 자잘한 이미지를 캐쉬해서 그랬더란 글을 본적이 있습니다.

송효진의 이미지

용량만 충분하면 당연히 램이 낫습니다.
쓰기상황에서도요.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~
http://xenosi.de/

bushi의 이미지

이것도 (주기적으로?) 계속 반복되는 주제군요.

리눅스에서라면, 개선되고 변하는 점이 있으니 계속 댓글다는 것도 괜찮을 것 같습니다.

filesystem 수준의 cache, blockdevice 수준의 cache 가 도움이 되지 않거나 오히려 해가 되는 대표적인 분야가
DBMS 와 multimedia 응용입니다.

이것을 해결하기 위해 다양한 방법이 존재하는데,
DBMS 의 경우 자체적인 체계를 갖고 있기 때문에 선택의 폭이 좀 더 넓습니다.

1. 구성파일들을 tmpfs(shmfs) 나 pramfs 같은 램 전용 파일시스템에 놓고 사용하는 것.
2. /dev/raw 를 이용한 block device 접근.
3. O_DIRECT 를 이용한 파일 접근.

1번은 기계의 물리적인 제한, 즉 램이 그만큼 더 필요하다는 것이 제한사항이고,
2번은 어플리케이션을 똑똑하게 만들어야 한다는 것이 제한사항이고,
3번은 어플리케이션을 조심스럽게 만들어야 한다는 것이 제한사항입니다. O_DIRECT 에 대한 완전한 이해가 필요합니다.

1번은 램에다 파일시스템을 올려서 편하게 사용할 목적으로 리눅스 OS 에서 유용하게 사용되고 있고,
2번은 자체적인 cache 를 효율적으로 구현한 엔터프라이즈급의 DBMS 가 예전부터 애용했고,
3번은 multimedia 처럼 파일시스템과 블록디바이스는 필요하지만 cache 는 불필요한 응용에서 사랑받습니다.

뭔가 더 시험해서 결론을 내고 싶다면,
시험할 대상의 동작특성을 정확히 안 상태에서 환경을 적절히 바꿔서 해보세요.
그렇지 않다면 결과를 해석해서 올바른 결론을 내리는 것이 아예 불가능합니다.

read 건 write 건, sequencial 이건 random 이건 RAM 이 disk 보다 느릴 이유는 없습니다.
RAM 이 더 느리다면 file system 의 cache 가 도대체 뭣을 위해 존재한단말입니까.
리눅스 커널 문서 중 다음과 같은 내용이 있습니다.

drop_caches
-----------
 
Writing to this will cause the kernel to drop clean caches, dentries and
inodes from memory, causing that memory to become free.
 
 To free pagecache:
         echo 1 > /proc/sys/vm/drop_caches
 To free dentries and inodes:
         echo 2 > /proc/sys/vm/drop_caches
 To free pagecache, dentries and inodes:
         echo 3 > /proc/sys/vm/drop_caches
 
 As this is a non-destructive operation and dirty objects are not freeable, the user should run `sync' first.

OTL

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.