회고
Tqdm과 멀티프로세싱
Tqdm과 멀티프로세싱
2021.07.26파이썬 코드에서 샘플링 부분이 성능이 나오지 않아 멀티프로세싱을 사용해 이를 해결하고자 했다. 처음에는 다음과 같이 코드를 작성했다. from multiprocessing as mp if n_workers = =1: samples = list(map(sampler.sample, densities)) else: with mp.Pool(n_workers) as pool: samples = pool.map(sampler.sample, densities) 파이썬의 multiprocessing 라이브러리에서 Pool을 사용할 때 worker의 개수가 하나일때도 process를 생성해 pool을 사용하지 않은 경우보다 성능저하가 있었다. 무시해도 될 수준이지만 이 부분을 분기문을 통해 처리했다. 하지만 위와 같이 ..
리눅스와 도커 - Cgroups
리눅스와 도커 - Cgroups
2021.06.20배경 도커와 같은 컨테이너 기술은 namespace와 Cgroup 이라는 리눅스 커널의 기능을 사용한다. namespace는 프로세스를 격리하는 기술이다. 이번에는 Cgroup에 대해서 알아보았다. 요약 Cgroups는 하나 혹은 복수개의 프로세스의 시스템 자원의 사용을 격리하는 기술이다. 컨테이너 기술은 namespace와 프로세스를 격리하고, 해당 프로세스가 사용할 수 있는 자원은 Cgroup으로 격리하는 방식으로 동작한다. 즉, 프로세스들이 각각 다른 머신을 운영하는 것과 같이 사용할 수 있다. Cgroups (Control Groups) 리눅스 매뉴얼 페이지에서 Cgroups의 정의를 다음과 같이 하고 있다. Control groups, usually referred to as cgroups, a..
리눅스와 도커 - namespace
리눅스와 도커 - namespace
2021.06.13배경 도커 문서에서 도커가 사용하는 기술에 대해 다음과 같이 이야기한다. Docker uses a technology called namespaces to provide the isolated workspace called the container. When you run a container, Docker creates a set of namespaces for that container. These namespaces provide a layer of isolation. Each aspect of a container runs in a separate namespace and its access is limited to that namespace. 즉, namespace라는 기술을 사용해 자원을 격리..