process와 thread의 정확한 차이가 무엇인가요?

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

process와 thread의 정확한 차이가 무엇인가요?

우상훈
This post was updated on .
ngrinder를 이용해서 회사에서 성능테스트를 진행중에있습니다.
진행도중 궁금한것이 있어서 질문드리는데

1. 가상사용자(vuser)를 500으로 설정할 경우,
process 1, thread 500 과
process 5, thread 100의 정확한 차이를 알고 싶습니다.

예시) 프로세스를 조금더 많이 사용하면 부하테스트에 안정적이고, 스레드를 사용하면 어떤점이 좋지만 어떤점은 안좋다.
이런식으로 자세한 설명 부탁드립니다!

2. 1개의 머신에 2개이상의 agent를 사용했을 때 안좋은점이 무엇인가요?
Reply | Threaded
Open this post in threaded view
|

Re: process와 thread의 정확한 차이가 무엇인가요?

junoyoon
Administrator
1. vuser 는 전체 쓰레드 개수(프로세스개수*프로세스당 쓰레드 개수) 와 동일합니다.
   테스트 스크립트를 어떻게 작성했으냐에 따라 프로세스와 쓰레드 개수를 적절하게 지정하는게 필요한데요. 예를 들어 static 변수에 대규모의 리소스(예:100mb)를 로딩 해 두었을 경우, 이는 프로세스 개수만큼 에이전트 메모리를 더 필요로 합니다. 그리고 일반 멤버 변수에 리소스를 로딩하였을때는 쓰레드 개수만큼 곱한 메모리를 필요로 합니다.
   OS 가 현재 떠 있는 프로세스간에 context switching을 하기 때문에 프로세스 개수를 늘리면 그 만큼 에이전트가 cpu를 사용하는 기회가 늘어나긴 하지만, 자바가 기본적으로 사용하는 메모리도 늘어나기 때문에, 과도한 프로세스 개수는 에이전트의 메모리 사용량을 소모시켜, threshing 상태로 빠질 수 있습니다. 저희가 예전에 테스트 했을 때는 프로세스는 최대 10개 정도가 최대치였습니다.

2. 1개의 머신에 2개 이상의 agent를 사용할 경우, 현재 이 머신이 어느정도의 free 메모리를 가지고 있는지 에이전트가 판단하기 힘들어 테스트 프로세스의 메모리 할당을 제대로 할 수 없습니다. 그리고 상호 간섭 현상(네트웍 트래픽)이 발생하여 테스트의 측정 결과를 신뢰할 수 없습니다.
Reply | Threaded
Open this post in threaded view
|

Re: process와 thread의 정확한 차이가 무엇인가요?

우상훈
좋은 답변 감사드립니다.
2번 연계질문 하나 더 드리겠습니다.
A, B머신에 각각 하나의 agent를 사용하려고 하는데
현재 A머신에 controller가 있고 B머신의 agent를 A머신의 controller에 연결하려면 어떤 설정이 필요한가요?
agent.conf 파일안에 agent.controller_host=localhost -> A머신의 ip로 바꿔도 127.0.0.1 로컬로 연결됩니다.
어떤설정을 바꿔야하고, 포트도 따로 바꿔야하나요??
Reply | Threaded
Open this post in threaded view
|

Re: process와 thread의 정확한 차이가 무엇인가요?

leedonggyu
에이전트는 에이전트 홈 폴더(.ngrinder_agent)에 있는 agent.conf 파일을 기반으로 동작합니다.
혹시 에이전트 홈 폴더가 아닌 다운로드 후 압축을 푸신 에이전트 폴더의 __agent.conf 파일을 수정 하셨을 경우
실행시 -o 옵션을 주셔야 변경 된 설정이 적용되게 됩니다.
Reply | Threaded
Open this post in threaded view
|

Re: process와 thread의 정확한 차이가 무엇인가요?

우상훈
감사합니다! 잘동작합니다 ㅎㅎ