Skip to content

page-merge-par <test> #20

@SangChunn

Description

@SangChunn
#include "tests/main.h"
#include "tests/vm/parallel-merge.h"

void
test_main (void) 
{
  parallel_merge ("child-sort", 123);
}

parallel_merge()는 무엇인가?

    1. 약 1MB의 랜덤 데이터를 생성한다
      • ARC4로 버퍼를 무작위로 채움
      • 이 데이터를 여러 chunk로 나눔
    1. 여러 개의 child-sort 프로세스를 병렬로 실행
      • fork로 여러 자식을 만들고
      • 각 자식에게 chunk를 정렬시키기 위해 exec(“child-sort”) 실행
      • 이 과정에서 부모는 동시적으로 여러 child-sort가 작업을 수행하도록 함
    1. 각 child-sort는 buffer 파일을 이용해 정렬

각 자식
1. buffer 파일에서 chunk를 읽고
2. 정렬 수행
3. 다시 buffer 파일에 정렬 결과를 저장
4. exit(123)

    1. 부모는 각 child-sort의 정렬 결과를 병합(merge)

각 chunk는 내부적으로 정렬되어 있으므로 전체를 병합 정렬(merge sort의 최종 단계)로 합침

    1. 최종적으로 정렬된 전체 버퍼의 값이 정상인지 검증
      • histogram을 사용하여 byte 분포가 정확한지 검사
      • 오름차순 정렬 여부 확인

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Test

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions