Skip to content
isdnetworks
Go back

먼저 돌려도 안 줄던 총시간

여러 채널에 복구 작업을 돌려야 했고 채널마다 상품이 있는데 여러 채널이 같은 마스터 상품을 공유하는 구조였다. 가장 큰 채널을 먼저 단독으로 돌리면 공유 마스터가 미리 처리돼 나머지가 빨라진다는 전략을 세웠다.

Table of contents

Open Table of contents

무너진 전제

이 전략의 전제는 마스터 처리가 싸고 확인만 하고 넘어간다는 것이었다. 그러면 큰 채널을 먼저 돌리는 비용이 크지 않고 나머지가 이득을 본다.

전제를 확인하려고 마스터 단계가 실제로 무엇을 하는지 봤더니 거의 전부가 신규 본문 이미지 재생성 백필이었다. 확인만 하는 것이 아니라 실제 변환을 돌리고 있었고 그것이 전체 비용의 본체였으므로 전제가 무너졌다.

실측한 겹침과 시간

그러면 실제로 얼마나 이득인지를 재야 했다. 그 채널의 마스터 중 이미 처리된 것을 세니 3분의 1 정도였고 나머지 3분의 2는 최초 처리가 필요했다.

앞서 돌린 작업들이 본문 이미지를 포함하지 않았기 때문이다. 실측 속도로 환산하니 이 채널의 마스터 단계만 25시간이 넘었다.

멱등 백필의 성질

여기서 이 백필의 성질을 다시 봤다. 멱등하고 전역에서 한 번만 실제로 처리된다.

같은 마스터에 두 프로세스가 동시에 요청하면 한쪽만 처리하고 다른 쪽은 재사용하므로 여러 채널을 동시에 돌려도 합집합이 정확히 한 번만 처리되고 그 비용이 여러 프로세스로 분산된다.

이동일 뿐인 순서 변경

이것이 결론이었다. 순서 변경만으로는 순차 총시간이 거의 안 준다.

큰 채널이 남을 선커버해서 뒤의 채널들이 짧아지는 것은 맞지만 그만큼 앞 채널이 길어지므로 비용이 앞으로 이동할 뿐이다. 선행 실행은 남들을 선커버하지만 자기 최초 처리분은 누구도 대신 못 하고 그것이 3분의 2였다.

실재한 가속과 섞인 평균

이 전략이 완전히 헛것은 아니었는데 실행 중에 이미 처리된 구간을 평균의 두 배 속도로 지나가는 것이 관측됐다. 가속 자체는 실재한다.

다만 조심할 것이 하나 나왔다. 내가 쓴 실측 속도가 그 가속 구간이 이미 섞인 혼합 값이라 최초 처리만 있는 채널은 그보다 느리다. 구성이 다르면 속도가 다르므로 평균을 다른 대상에 그대로 적용하면 안 된다. 그래서 멱등하고 전역에서 한 번만 도는 백필이 지배 비용인 작업은 직렬화하지 않고 동시 실행으로 분산하기로 했다.

정리


Share this post on:

Previous Post
설계를 바꾼 과금 구조
Next Post
분리된 입구, 공유된 데이터