2017-03-31 17 views
0

저의 목표는 의도적으로 느린 파일 시스템에 대한 테스트를 실행하여 혼란 스토리지 시나리오에서 성능 메트릭을 테스트하는 것입니다. 같은 의미에서 컨테이너 내의 cgroup을 사용하여 메모리와 cpu를 제한하는 방법이 있기 때문에 내가 부과 할 수있는 제한이 있는지 여부를 고려했습니다.단위 테스트를 위해 특정 디렉토리를 쉽게 느리게 만들 수있는 방법이 있습니까?

  • 의도적으로 속도가 느린 디렉토리에 간단한 파일 시스템을 마운트 할 수있는 방법이 있습니까?
  • 또는, 명령 줄 작업을 실행하여 도커 컨테이너가 디스크 작업 qoutas를 컨테이너에서 제한하도록하는 방법이 있습니다 (여기서 명령 줄 작업 부분이 중요하지 않음).이 옵션을 도커 컨테이너에서 실행하면, 그것은 나를 위해 kubernetes의 내부에서 시작될 것이다).

답변

1

FUSE은 하나의 경로를 제공합니다. 나는 https://github.com/fntlnz/fuse-example.git에서 예를 복제하고 전략적 위치에 fuse-example.csleep() 전화를 추가 :

21 if (strcmp(path, filepath) == 0) { 
22  stbuf->st_mode = S_IFREG | 0777; 
23  stbuf->st_nlink = 1; 
24  stbuf->st_size = strlen(filecontent); 
25  sleep(1); // Right here 
26  return 0; 
27 } 

그럼 내가 그것을 마운트 :

./bin/fuse-example -d -s -f /tmp/example 

그리고 그것을 촬영했다 :

% cd /tmp/example 
% time cat file 
I'm the content of the only file available there 
cat file 0.00s user 0.00s system 0% cpu 1.008 total 
% 

약간의 코딩 작업이 필요하지만이 방법의 장점은 거의 모든 파일 시스템의 특성과 품질을 완벽하게 제어 할 수 있다는 것입니다.

+0

정말 멋진 아이디어입니다. 더 많은 선언적 인 i/o 리미터가 놀란다. – jayunit100