แก้ไข error ของ fatal error: runtime: out of memory บน Ubuntu

ผมเจอกรณีนี้ เมื่อผมจะใช้คำสั่งเรียกดู docker แล้วเกิด error ขึ้น สาเหตุก็คือแรมมันน้อยจริงๆ นั้น แหละ แค่ 1GB เอง เครื่องที่ผมใช้นั้นเสียงเงินจ่ายรายเดือน การจะเพิ่มแรม เป็น 2 GB ก็เท่ากับเพิ่มเงินไปอีก ก็เลยเลือกใช้วิธีการเปลี่ยน HDD เป็น RAM แทนซึ่งผลลัพธิ์ใช้งานคำสั่ง เรียกดู docker ได้ปกติ

fatal error: runtime: out of memory

runtime stack:
runtime.throw(0x55981a03f3e4, 0x16)
        /usr/local/go/src/runtime/panic.go:1117 +0x74 fp=0x7ffea1dcd310 sp=0x7ffea1dcd2e0 pc=0x559818a20cf4
runtime.sysMap(0xc000000000, 0x4000000, 0x55981b69c910)
        /usr/local/go/src/runtime/mem_linux.go:169 +0xc7 fp=0x7ffea1dcd350 sp=0x7ffea1dcd310 pc=0x559818a03407
runtime.(*mheap).sysAlloc(0x55981b682b00, 0x400000, 0x0, 0x0)
        /usr/local/go/src/runtime/malloc.go:729 +0x1d4 fp=0x7ffea1dcd3f8 sp=0x7ffea1dcd350 pc=0x5598189f65b4
runtime.(*mheap).grow(0x55981b682b00, 0x1, 0x0)
        /usr/local/go/src/runtime/mheap.go:1346 +0x85 fp=0x7ffea1dcd460 sp=0x7ffea1dcd3f8 pc=0x559818a12665
runtime.(*mheap).allocSpan(0x55981b682b00, 0x1, 0x2c00, 0x0)
        /usr/local/go/src/runtime/mheap.go:1173 +0x609 fp=0x7ffea1dcd4e0 sp=0x7ffea1dcd460 pc=0x559818a12469
runtime.(*mheap).alloc.func1()
        /usr/local/go/src/runtime/mheap.go:910 +0x5a fp=0x7ffea1dcd530 sp=0x7ffea1dcd4e0 pc=0x559818a4e47a
runtime.(*mheap).alloc(0x55981b682b00, 0x1, 0x220000012c, 0xffffffff)
        /usr/local/go/src/runtime/mheap.go:904 +0x85 fp=0x7ffea1dcd580 sp=0x7ffea1dcd530 pc=0x559818a11a05
runtime.(*mcentral).grow(0x55981b694e38, 0x0)
        /usr/local/go/src/runtime/mcentral.go:232 +0x7b fp=0x7ffea1dcd5c8 sp=0x7ffea1dcd580 pc=0x559818a029fb
runtime.(*mcentral).cacheSpan(0x55981b694e38, 0x7ffea1dcd678)
        /usr/local/go/src/runtime/mcentral.go:158 +0x2ff fp=0x7ffea1dcd620 sp=0x7ffea1dcd5c8 pc=0x559818a027df
runtime.(*mcache).refill(0x7f8b9d2b6108, 0x2c)
        /usr/local/go/src/runtime/mcache.go:162 +0xac fp=0x7ffea1dcd668 sp=0x7ffea1dcd620 pc=0x559818a01cec
runtime.(*mcache).nextFree(0x7f8b9d2b6108, 0x7ffea1dcd62c, 0x559818a4d027, 0x7ffea1dcd708, 0x5598189f80de)
        /usr/local/go/src/runtime/malloc.go:882 +0x8d fp=0x7ffea1dcd6a0 sp=0x7ffea1dcd668 pc=0x5598189f6e0d
runtime.mallocgc(0x178, 0x55981a878b20, 0x7ffea1dcd701, 0x7ffea1dcd788)
        /usr/local/go/src/runtime/malloc.go:1069 +0x870 fp=0x7ffea1dcd728 sp=0x7ffea1dcd6a0 pc=0x5598189f7830
runtime.newobject(0x55981a878b20, 0x559818a4cfe0)
        /usr/local/go/src/runtime/malloc.go:1177 +0x3a fp=0x7ffea1dcd758 sp=0x7ffea1dcd728 pc=0x5598189f7a9a
runtime.malg(0x8000, 0x0)
        /usr/local/go/src/runtime/proc.go:3988 +0x33 fp=0x7ffea1dcd798 sp=0x7ffea1dcd758 pc=0x559818a2c073
runtime.mpreinit(0x55981b66ad80)
        /usr/local/go/src/runtime/os_linux.go:355 +0x2b fp=0x7ffea1dcd7b8 sp=0x7ffea1dcd798 pc=0x559818a1d72b
runtime.mcommoninit(0x55981b66ad80, 0xffffffffffffffff)
        /usr/local/go/src/runtime/proc.go:744 +0xfa fp=0x7ffea1dcd800 sp=0x7ffea1dcd7b8 pc=0x559818a24c3a
runtime.schedinit()
        /usr/local/go/src/runtime/proc.go:637 +0xb3 fp=0x7ffea1dcd860 sp=0x7ffea1dcd800 pc=0x559818a247b3
runtime.rt0_go(0x7ffea1dcd968, 0x2, 0x7ffea1dcd968, 0x0, 0x7f8b9c8efbf7, 0x2, 0x7ffea1dcd968, 0x200008000, 0x559818a55ba0, 0x0, ...)
        /usr/local/go/src/runtime/asm_amd64.s:220 +0x129 fp=0x7ffea1dcd868 sp=0x7ffea1dcd860 pc=0x559818a55ce9

ก่อนเพิ่ม

หลังเพิ่ม ผมเพิ่มให้เป็น 4GB เลย

ภาพ

ส่วนนี้คือวิธีการทำครับ