Dask 성능개선 방안

손호준·2023년 1월 12일
0

성능 개선을 위해 생각할 점

  1. 여러번 재사용할 크고 복잡한 dag가 있다면 persist메서드를 사용해서 계산속도를 높이자
    ->but 함부로 사용하면 안됨
  2. 데이터의 이동을 최소화하는 것이 일반적으로 더 좋은 성능을 낸다
  3. 동시성 문제와 gil 고려
  4. 리소스 경합 문제
  5. 장애에 대한 복구(워커 장애 or 데이터 손실)
  6. 리파티션 -> 우리는 쓸일 없음
  7. 셔플이 필요한 작업에 대해서는 결과를 유지 및 저장함
  8. join,merge,groupby,rolling같은 관계형 작업들은 셔플링이 많이 발생해 병목을 유발함
  9. t모델을 적용할때 동질그룹이 유한하다는(너무 크지않다는) 가정을 하자
  10. 작업이 간단한 경우, 단일 스레드 pandas가 더 빠를 수 있다.
  11. 더 큰 블록 크기는 메모리 사용을 증가시키지만, 더 빠른 처리가 가능하다

dask-on-ray (ray 스케줄러 사용)

dask는 워커 프로세스당 하나씩 개체 저장소를 사용함
dask-on-ray는 노드당 단일 공유 메모리 개체 저장소를 사용함
공유메모리를 사용하면 개체를 복사할 필요가 없어져 IPC오버헤드가 낮아짐

dask에서 개체 저장소가 프로세스를 사용하면 병목현상이 발생함(직렬화/역직렬화, 복사)
GIL때문에 항상 스레드를 쓸 수도 없음.

dask에서는 프로세스수,스레드수, 워커의 메모리 제한, 스필 시점 등의 파라미터 조정 가능
dask-on-ray에서는 각 노드에 저장된 객체가 소비할 수 있는 메모리양을 엄격히 제한하는 파라미터를 사용

profile
Rustacean🦀/Data engineer💻

0개의 댓글