(운영하면서 느낀 점..)

가상화 장비를 마구 때려 넣어서는 성능을 올릴 수 없다. 가상화 장비가 사용할 용도가 있다. IO(네트워크/파일)가 높은 곳에서는 가상화 장비가 큰 이슈가 있다. 또한  CPU를 많이 사용하는 곳(또는 격하게 메모리를 사용하는 곳)에서 가상화 장비를 쓰는 것은 적합하지 않은 것 같다..

잘못하면 스왑인/스왑아웃때문에 성능을 떨어뜨릴 수 있는 소지도 있다.

점점 가상화 솔루션이 안정화되면서 단점이 감쇄되고 있지만, 가상화 솔루션/시스템의 한계는 존재한다.

관련해서 웹의 자료가 있어서 공유한다.

 

1.

http://www.cc.iitd.ernet.in/misc/cloud/hypervisor_performance.pdf

네이티브, 젠과 하이퍼바이저를 비교한 자료

image

image

image

 

 

2.

http://www.cl.cam.ac.uk/research/srg/netos/xen/performance.html

3.

Performance impact of virtualization on web-based MORPG systemx
(http://dl.acm.org/citation.cfm?id=2095596)

http://delivery.acm.org/10.1145/2100000/2095596/p333-kohana.pdf?ip=111.91.137.68&acc=ACTIVE%20SERVICE&CFID=90606728&CFTOKEN=23074530&__acm__=1332135001_833f2b54510411dcaef329f3bb37cbb6

6. CONCLUSION
This paper described a primary investigation of our virtualized
MORPG system. By conducting experiment, we
found out that the frequent communication among web servers
for remote access is one of bottlenecks and increasing the
number of virtual CPU per a virtual machine can reduce
the latency of remote access. The average latency of cgi
with two virtual CPU is 25 % less than that with one CPU.
The number of virtual CPU for a virtual machine is a key
to improve performance.
However, the number of real CPU
is limited. Thus, we should
decrease the number of remote
access or the number of Unix processes which serves for sharing
data among web servers. The size of RAM for a virtual
machine also seems to be an important factor.
We cannot
figure out the relation between the performance and the
RAM size. It might depend on the implementation of KVM.
Further study should be needed.

 

4.

http://www.webperformance.com/library/reports/LoadTestingVirtualizationPerformance/

물리 장비

가상화 장비

Posted by '김용환'
,

많은 프로젝트가 있을 때 굳이 pom.xml에 기술하는 것보다 하나의 파일로 관리하는 게 편할 수 있다.
 profile, mirror를 공통관리함으로서 pom.xml 파일을 적당히 관리한다.

${user.home}/.m2/settings.xml


Posted by '김용환'
,

 

아주 훌륭하신 분들이 스타트업 바이블 이북을 공짜로 올리셨다.

2주안만 무료로 다운받을 수 있도록 해주신다니  받으면 좋을 것 같다. iOS의 iBook과도 호환된다.

http://www.baenefit.com/2012/03/ibook.html

 

image

image

Posted by '김용환'
,

 

Hudson을 이용해서 Spring Batch Job을 동작시킬 때 Job Parameter를 쉽게 넘길 수 있는 방법이 있다.

 

Hudson 설정에서 This build is parameterized 체크박스를 on으로 하고, parameter값을 추가한다.

image

 

Hudson에서 실행할 때 (build now), 아래와 같은 화면이 나온다.

image

 

실행 쉘에 파라미터를 넣어주도록 하고 넘기면..

image

 

잘 넘어가서 실행된다.

image

'scribbling' 카테고리의 다른 글

maven의 settings.xml 파일 위치  (0) 2012.03.12
스타트업 바이블 iBook(무료배포)  (0) 2012.03.09
Anatomy of the Google Architecture  (0) 2012.02.23
Google File System 자료  (0) 2012.02.23
Cut the rope 웹 브라우져에서 하기  (0) 2012.02.22
Posted by '김용환'
,
Posted by '김용환'
,
Posted by '김용환'
,

 

스마트폰에서 했던 Cut the rope 게임이 웹으로 오픈되었다.

http://www.cuttherope.ie/

IE9 또는 다른 브라우져(크롬 등등)에서 작동됨

 

image

Posted by '김용환'
,

일반적으로 자바 배치가 많은 경우에 cpu가 튄다. jvm 단위의

이럴 때는 여러가지를 사용하는데, 
1.  cpulimit 를 쓰는 방법
2. 서버를 여러대로 분산하는 법,
3. 웹 서버로 해서 배치를 만드는 법 (quartz 이용)
4. 스케쥴을 잘 정리할 것

자바는 기본적으로 jvm 시작시, 클래스 로딩, jvm 종료시 서버에 부하를 준다. 따라서 이 작업을 최대한 피하게 하는 것이 좋다. 따라서 10분 단위 미만의 배치는 웹 서버로 바꿔 배치를 돌리는 것이 합리적인 것 같다.
Posted by '김용환'
,


1.  경험
   - 웹 서비스 또는 솔루션을 운영하면서 jvm 옵션을 변경을 다양한 경험 하기 (heap memory, gc algorithm, gc pause, logging)
   튜닝하면서 자연스럽게 인터넷에 흩어져 있는 자료들을 보면서 깊지 않은 공부 (오라클 또는 썬 문서)를 많이 본다.
   - Memory Management in the Java HotSpot™ Virtual Machine (http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf)

2. 학습 필요
   - 데니스 리치가 쓴 c programming lanuguage의 chap 8 장 (malloc, free) - 기본 중의 기본.
   - The Garbage Collection Handbook The Art of Automatic Memory Management
   - Garbage Collection: Algorithms for Automatic Dynamic Memory Management
   (운영체제와 컴파일러에 정통하신 분은 금방 보는 참고서일뿐 ......ㅡ.ㅡ;;)

3. 주화입마 될 수 있다. jdk쪽은 좀 복잡함. 머리속을 gc 를 하겠다는 생각으로 봐야함..
   - 오픈 소스 보기
      parrot (https://github.com/parrot/parrot/blob/master/src/gc/gc_gms.c)
      jdk7 (http://hg.openjdk.java.net/jdk7/modules/hotspot/file/9646293b9637/src/share/vm/gc_implementation/)
      qish (http://starynkevitch.net/Basile/qishintro.html )
      mono (http://mono-project.com/Generational_GC, https://github.com/mono/mono/tree/e4b9b8802066f6ed8cca151fe8cddcb4f3262806/mono/metadata 에서 gc.c)
      v8 (http://code.google.com/p/v8/source/browse)의 heap.cc, spaces.cc,  mark-compact.cc
     jikesrvm (http://sourceforge.net/projects/jikesrvm/files/jikesrvm/3.1.1/ )의 rvm\src\org\jikesrvm\mm\mminterface 클래스파일들
 - 논문 보기
     IEEE, ACM, 다양한 paper를 참조하고 reference를 찾아서 보기
     (http://scholar.google.co.kr/scholar?hl=ko&lr=&q=related:ppTY-k29HfoJ:scholar.google.com/&um=1&ie=UTF-8&ei=3Tw1T__XHOGTiQeW2ID2AQ&sa=X&oi=science_links&ct=sl-related&resnum=4&ved=0CF0QzwIwAw)

  
나는 다 보지는 못했고 계속 공부중..

 

Posted by '김용환'
,

 

내가 쓴 아래 블로그에 대한 후속 공부들이다.

http://knight76.tistory.com/entry/Google%EC%9D%98-TCP-Fast-Open-paper
http://knight76.tistory.com/entry/%EA%B5%AC%EA%B8%80-TCP-Fast-Open-paper-TFO%EB%A5%BC-%EC%9D%BD%EA%B3%A0

 

Let’s make tcp faster(http://googlecode.blogspot.com/2012/01/lets-make-tcp-faster.html) 페이지에 보면 리눅스 커널에 패치된 글이 나온다.

image

1. 리눅스 2.6.39-rc1에 “TCP initial congestion window”을 10으로 수정했다.
2. 리눅스 3.1-rc1에 처음 재전송 timeout을 1초로 수정했다.
3. 리눅스 3.2-rc1에 Proportional Rate Reduction이 수정했다.
4. TCP Fast Open은 아직 리눅스 커널에 구현되지 않았다. 테스트를 진행중이다.

마치며…

구글의 리눅스 커널 패치하는 사람이 있어서 그런지 빨리 패치한다. 영향력이 대단하다. 사실 그동안 성능 튜닝하면서 TCP 커널 파라미터를 수정하려고 하면, 시스템 엔지니어들이 얼마나 반대했었다. 믿을 수 없다… 점점 구글이 관련 글을 쓰면서 디폴트값을 수정하는 것을 보면.. 진짜 멋지기도 하다. 리눅스 커널을 패치해야 시스템 엔지니어들도 따라올테니….

Posted by '김용환'
,