0

필자는 더 많은 독자와 적은 수의 작가의 경우 세마포어와 읽기 쓰기 세마포어의 성능을 실질적으로 보여주기 위해 테스트 사례를 작성하고 그 반대의 경우도 마찬가지입니다. 세마포어 (실제로 묻는 커널 공간에서)를 구현했지만 유스 케이스를 작성하는 방법을 얻지 못하고 실제로 실제 평가를 수행합니다 (범주 적으로).세마포어와 R/W 세마포어 사이의 Performace 평가

+0

실제로는 장치 드라이버 (IPC 장치 드라이버)입니다. 따라서 실제로 세마포어 및 r/w 세마포어의 성능을 두 가지 사용 사례에서 표시해야합니다. 1) 더 많은 독자와 적은 수의 쓰기 2) 적은 수의 읽기 및 기타 쓰기 그렇다면 AC 프로그램에서이 사례를 생성하는 방법은 20 개를 써야합니다. -30 동일한 c 프로그램을 실행하고 많은 터미널을 열어 paralley를 실행하거나 다른 방법도 있습니다. 그리고 위의 작업을 수행 한 후에 우리는 실제로 성능 차이를보고 관찰 할 수 있습니다. –

답변

1

두 가지 버전의 코드 (세마포어/R/W 세마포어)를 시작하면 어떨까요? 유스 케이스는 테스트중인 실제 기능에 따라 다릅니다. 장치 드라이버입니까? IO 관련이 있습니까? 네트워킹과 관련이 있습니까? 이를 모른 채 유스 케이스를 찾는 것은 어렵습니다.

일반적으로 IO 벤치 마크와 같은 작업을 수행하면 일련의 실행을 위해 증가하는 메모리 사용량에 대해 여러 시뮬레이션을 실행하게됩니다. 다른 실행 세트는 증가하는 프로세스로드에있을 수 있습니다. 다른 블록 크기가 다를 수 있습니다. 나는 그것들 각각을 총 대역폭과 같은 것으로 비교할 것이고 성능 (이 경우에는 총 대역폭)이 그러한 테스트에서 어떻게 바뀌는지를 볼 것입니다.

USB 드라이버와 같은 것을 테스트하는 경우에도 사용 사례가 완전히 다를 수 있습니다.

+0

실제로는 장치 드라이버 (IPC 장치 드라이버)입니다. 따라서 우리는 실제로 두 개의 사용 사례에서 세마포어 및 r/w 세마포어의 성능을 보여야합니다. 1) 더 많은 독자와 적은 수의 쓰기 2) 적은 수의 읽기 및 기타 쓰기 어떻게 ac 프로그램에서 이러한 사용 사례를 생성 할 수 있습니까? 나는 20-30 개의 동일한 C 프로그램을 작성하고 그 많은 터미널을 열어서 팔레리를 실행하거나 다른 방법도있다. 그리고 위의 작업을 수행 한 후 실제로 성능을 확인하고 관찰 할 수 있습니다. –

0

다음이 개 C 프로그램을 작성하고

    간단한 초보적인 테스트로
  • reader.c
  • writer.c

그들에게 컴파일, 쉘 스크립트 test.sh를 작성하여 명령을 추가, 사용자 정의 세마포어를 사용하여 다음과 같이 테스트 바이너리를로드한다.

#!/bin/sh 

./reader & 
./reader & 
./reader & 
./reader & 
./writer & 

./test.sh로 위의 쉘 스크립트 4 독자와 한 작가를 시작합니다 시작. 테스트 시나리오에 맞게 사용자 정의하십시오.

프로그램이 올바르게 작동하는지, 즉 성능을 프로파일 링하기 전에 데이터가 올바르게 교환되었는지 확인하십시오.

IPC가 예상대로 작동하면, CPU 사용을 프로파일하십시오. test.sh을 실행하기 전에 다른 터미널에서 top 명령을 실행하십시오. 테스트 스크립트의 실행 시간 동안 다양한 수의 리더/라이터에 대한 CPU 사용 패턴을 관찰하십시오.

는 또한 개별 바이너리를 실행할 수 있습니다 (또는 테스트 스크립트)와 :

  • time <binary>
    총 수명시간이 커널 드라이버에서 대기 소비 인쇄하려면 .

  • perf record <binary>
    및 완료 후

    는 코드의 다양한 섹션에서 보낸 시간의 상대적인 양을 구하려면
    perf annotate main를 실행합니다.