드디어 오라클 free tier에서 인스턴스 하나를 확보했다.
사실 오라클 클라우드 계정 만들어 놓은 것은 몇 년 된것 같은데, 들어갈 때 마다 해당 region에서 최대치를 넘었다고 생성을 못하게 막아놨었다. 이번에 운이 좋게 하나 생성된 것 같다.
해당 프리티어의 memory가 0.5gb라 oom이 나기 쉬울 것이라 생각하여 애초에 인스턴스 생성 직후 메모리 스왑으로 2GB 가량의 스왑 메모리를 생성 해놨다.
하지만 간단한 파이썬 프로그램을 돌리는 와중에 중간 중간 멈추는 상황이 로그에 기록되었다.
대충 메모리가 원인일 것 같아 이를 확인하기 위해 dmesg | grep -i -E "oom|killed” 로 로그를 확인.
dmesg | grep -i -E "oom|killed"
[ 4416.341214] systemd-logind invoked oom-killer: gfp_mask=0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), order=0, oom_score_adj=0
[ 4416.343589] oom_kill_process.cold+0x8/0x83
[ 4416.743137] [ pid ] uid tgid total_vm rss rss_anon rss_file rss_shmem pgtables_bytes swapents oom_score_adj name
[ 4418.129532] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/system.slice/dnf-makecache.service,task=dnf,pid=11425,uid=0
[ 4418.133422] Out of memory: Killed process 11425 (dnf) total-vm:3591044kB, anon-rss:306220kB, file-rss:7240kB, shmem-rss:0kB, UID:0 pgtables:6488kB oom_score_adj:0
[ 4429.421369] oom_reaper: reaped process 11425 (dnf), now anon-rss:36kB, file-rss:52kB, shmem-rss:0kB
[12892.104644] systemd-journal invoked oom-killer: gfp_mask=0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), order=0, oom_score_adj=-250
[12892.188001] oom_kill_process.cold+0x8/0x83
[12892.694315] [ pid ] uid tgid total_vm rss rss_anon rss_file rss_shmem pgtables_bytes swapents oom_score_adj name
[12893.690128] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/system.slice/dnf-makecache.service,task=dnf,pid=25646,uid=0
[12893.695342] Out of memory: Killed process 25646 (dnf) total-vm:3394904kB, anon-rss:306860kB, file-rss:6888kB, shmem-rss:0kB, UID:0 pgtables:6072kB oom_score_adj:0
dnf-makecache.service 간에 oom이 발생한 것으로 나온다.
이게 뭐하는 친구인지 궁금해서 찾아보았다.
http://yesxyz.kr/how-to-refresh-package-cache-data-on-linux/
dnf는 패키지를 설치, 업데이트, 제거하는 데 있어서 속도와 효율성을 향상시키기 위해 캐시를 사용합니다. 이
캐시는 로컬 시스템에 저장된 패키지 메타데이터 정보로, 네트워크를 통해 가져오는 데 소요되는 시간을 줄이고, 패키지 정보를 더 빠르게 사용할 수 있게 합니다.
라고 한다. 즉, linux 내의 패키지- 메타데이터를 캐싱하는 서비스인것으로 생각된다. 해당 프로그램의 운영 서버로 사용하는 인스턴스였기 때문에, 캐싱을 중지하고 필요 시에만 업데이트하는 것으로 결정했다.
트레이드 오프로는
캐시 데이터가 오래되면 패키지 매니저가 최신 정보를 받지 못해 여러 문제가 발생할 수 있습니다. 아래는 오래된 캐시 데이터로 인한 일반적인 오류 몇 가지입니다.