2012년 2월 12일 일요일

[번역] Chrome 브라우져의 cache 영역을 ram으로

다음 문서는 Chrome의 cache영역을 ram disk(/dev/shm)밑으로 설정하고 전원이 꺼질때 유실되는 데이터를 하드 디스크로 복사하고 부팅시 복사된 하드 디스크의 데이터를 다시 ramdisk 밑으로 복사하는 과정을 거치는 노력을 하였다.

출처 : http://www.anders.bennehag.com/blog/2010/putting-chromes-cache-in-the-ram/
Chrome 웹 브라우져는 속도를 향상하는 방향으로 변화하고 있다. 그러나 지속적인 디스크 읽기와 쓰기로 내 Laptop 컴퓨터의 배터리와 하드드라이브를 소모하게된다.

다행이도 리눅스는 Ram으로 Mount 폴더를 가지고 있다. 이건 읽고 쓰는 작업이 하드 디스크에 영향을 미치지 않는다는 것을 의미한다. (실제로 내 Laptop의 디스크보다 2배정도 빠르다) 단점은 전원을 끄게되면 데이터가 사라지게 된다. 이 폴더는 통상 /dev/shm으로 불린다. 나는 이 폴더를 Chrome 브라우져의 cache로 사용하고자 한다.  그러나 나는 컴퓨터의 전원을 끌때 환경 설정, 확장 프로그램, 그리고 저장된 데이터의 잃어 버릴 준비가 되어 있지 않다. 그래서 나는 Ram으로 mount된 /dev/shm에 있는 폴더를 디스크로 복사하는 스크립트를 작성하였다. 그리고 이 스크립트는 Crome이 종료 될 때마다 실행된다.


이것은 Chrome의 cache를 Ram으로 설정하는 것이다.

# mkdir /dev/shm/.personal_synced # The folder in ram
# mkdir ~/.personal_synced # The mirrored folder on disk

매 시간마다 실행되는 간단한 스크립트를 작성하였다. (나는 좀더 쉬운 방식으로 작성되어 질 수 있다고 생각한다. 하지만 나는 아직 bash에 초보자 이다.)


#!/bin/bash
# Sync the ramdisk to harddrive

foldername=”.personal_synced”
ramdisk=”/dev/shm/”$foldername
harddisk_copy=”/home/anders/”
backup=”/home/anders/”$foldername”.old”

# Remove the old backup
echo “removing $backup”
rm -fr “$backup”
# Make a copy of the old one
echo “Copies the latest backup $harddisk_copy$foldername”
mv -f “$harddisk_copy$foldername” “$backup”
# Copy from ram
echo “Copies $ramdisk to harddrive, $harddisk_copy”
cp -R “$ramdisk” “$harddisk_copy”


나는 이 sync 스크립트가 Chrome이 종료 될때 실행되기를 원한다. 먼저 나는 나는 전원이 종료될때 실행되도록 시도하였다. 다음 스크립트는 Chrome이 종료될때 Ram 디스크를 동기화하는 것이고 난 그져 이 스크립트를 가지고 /usr/bin/google-chrome에 있는 symbolic link를 대체하였다.

#!/bin/bash
# Start Chrome with cache in the ram

/opt/google/chrome/google-chrome -user-data-dir=”/dev/shm/.personal_synced/google-chrome” “$@” && /home/anders/Scripts/syncRamdisk

소실된 모든 것들은 컴퓨터가 부팅될때 디스크 폴더의 것들을 복사하는 스크립트가 보상한다.

# The synced folder
cp -R /home/anders/.personal_synced /dev/shm/
chown -R anders /dev/shm/.personal_synced

# The chrome cache. I don’t want to sync this so it’s placed outside .personal_synced
mkdir /dev/shm/google-chrome
chown anders /dev/shm/google-chrome

그리고 단순히 시작 프로그램에 이 스크립트를 추가하였다.  System->Preferences에 해당하는 곳에 하면 된다.

Chrome의 cache를 우리의 자동 synced  폴더로 이동하자.

.config/google-chrome-folder를 synced 폴더로 이동하고 symbolic link로 대체함으로써 작업은 완벽해 졌다. (나는 또한 cache를 ramdisk로 옮겼으나 synced 폴더를 그렇게 하지 않았다. 나는 cache를 유지하는데 필요한 공간과 소비 시간에 아무런 변화점을 보지 못했다.)

# mv ~/.cache/google-chrome /dev/shm/google-chrome
# ln -s /dev/shm/google-chrome ~/.cache/google-chrome

# mv ~/.config/google-chrome /dev/shm/.personal_synced/
# ln -s /dev/shm/.personal_synced/google-chrome ~/.config/google-chrome

주의 사항들:

/dev/shm/는 모두에 의해서 읽기가 가능하다. 이 폴더에 어떤 것을 넣는 것은 매우 안전한 작업은 아니다.

추가작업: 나는 스크립트를 약간 수정하였다. root 소유의 폴더에서 문제점이 발생하였다.




댓글 없음:

댓글 쓰기