-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
#include "tests/main.h"
#include "tests/vm/parallel-merge.h"
void
test_main (void)
{
parallel_merge ("child-sort", 123);
}
parallel_merge()는 무엇인가?
-
- 약 1MB의 랜덤 데이터를 생성한다
• ARC4로 버퍼를 무작위로 채움
• 이 데이터를 여러 chunk로 나눔
- 약 1MB의 랜덤 데이터를 생성한다
-
- 여러 개의 child-sort 프로세스를 병렬로 실행
• fork로 여러 자식을 만들고
• 각 자식에게 chunk를 정렬시키기 위해 exec(“child-sort”) 실행
• 이 과정에서 부모는 동시적으로 여러 child-sort가 작업을 수행하도록 함
- 여러 개의 child-sort 프로세스를 병렬로 실행
-
- 각 child-sort는 buffer 파일을 이용해 정렬
각 자식
1. buffer 파일에서 chunk를 읽고
2. 정렬 수행
3. 다시 buffer 파일에 정렬 결과를 저장
4. exit(123)
-
- 부모는 각 child-sort의 정렬 결과를 병합(merge)
각 chunk는 내부적으로 정렬되어 있으므로 전체를 병합 정렬(merge sort의 최종 단계)로 합침
-
- 최종적으로 정렬된 전체 버퍼의 값이 정상인지 검증
• histogram을 사용하여 byte 분포가 정확한지 검사
• 오름차순 정렬 여부 확인
- 최종적으로 정렬된 전체 버퍼의 값이 정상인지 검증
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
Test