스왑 드라이브가 나열되었으나 사용되지 않음

스왑 드라이브가 나열되었으나 사용되지 않음

메모리 집약적인 프로세스를 수행해야 하기 때문에 16GB USB 썸스틱을 스왑 드라이브로 사용하고 있습니다. 스왑 드라이브가 목록에 표시되고 마운트되었지만 ODROID가 2GB에 도달하면 메모리 부족으로 인해 정지됩니다. 이것은 정보입니다.

uname -a

Linux odroidxu4 4.9.11-odroidxu4 #12 SMP PREEMPT Thu Feb 23 22:10:22 CET 2017 armv7l GNU/Linux

sudo fdisk -l

Device         Boot Start      End  Sectors  Size Id Type
/dev/mmcblk1p1       8192 30493951 30485760 14.5G 83 Linux

Device     Boot Start      End  Sectors  Size Id Type
/dev/sda1  *     8064 30719999 30711936 14.7G  b W95 FAT32

/etc/fstab

UUID=78fe8581-c55e-4665-bbf1-724ea046a7c3 none swap sw,pri=5 0 0
UUID=4d62b70f-fbde-4e55-bf71-089484f36c8f / ext4 errors=remount-ro 0 1 
tmpfs /tmp tmpfs defaults,nosuid 0 0
/var/swap none swap sw 0 0

sudo 스왑 -s

master@odroidxu4:~$ sudo swapon -s
Filename                Type        Size    Used    Priority
/dev/sda1                               partition   15355964    0   -1

쿠로코

/dev/mmcblk1p1: UUID="4d62b70f-fbde-4e55-bf71-089484f36c8f" TYPE="ext4" PARTUUID="d528b458-01"
/dev/sda1: UUID="78fe8581-c55e-4665-bbf1-724ea046a7c3" TYPE="swap" PARTUUID="cf5e55bf-01"
/dev/mmcblk1: PTUUID="d528b458" PTTYPE="dos"

그러나 활성 프로세스가 실행 중일 때는 스왑이 작동하지 않습니다. 사용해보면 free -mRAM이 완전히 소진되고 스왑 영역이 여전히 0으로 표시되는 것을 볼 수 있습니다.

master@odroidxu4:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          1950       1913         37          9          0         11
-/+ buffers/cache:       1901         48
Swap:        14996          0      14996

현재 ODROID는 메모리 부족으로 인해 정지 및 종료됩니다.

이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

master@odroidxu4:~$ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=187287,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,relatime,size=399444k,mode=755)
/dev/mmcblk1p1 on / type ext4 (rw,relatime,errors=remount-ro)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
tmpfs on /tmp type tmpfs (rw,nosuid,relatime)
/dev/mmcblk1p1 on /var/log.hdd type ext4 (rw,relatime,errors=remount-ro)
log2ram on /var/log type tmpfs (rw,nosuid,nodev,noexec,relatime,size=51200k,mode=755)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=199724k,mode=700)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=199724k,mode=700,uid=1000,gid=1000)

이제 mkswap도 사용해 보세요...

실제로 마지막 mkswap은 내 swapon -s를

master@odroidxu4:~$ sudo swapon -s
Filename                Type        Size    Used    Priority
/dev/sda1                               partition   15355964    0   -2
/var/swap                               file        131068  0   -1

답변1

Odroid C2에는 32비트 프로세서가 있어 4GB의 가상 주소 공간을 제공합니다. 이 4GB 중 2GB는 사용자 공간에 사용할 수 있고 나머지 2GB는 커널용으로 예약되어 있습니다(커널이 CONFIG_VMSPLIT_2G로 구성되었다고 가정). 이는 단일 프로세스의 크기가 최대 2GB까지만 증가할 수 있음을 의미합니다.

오늘날 RAM 크기가 계속해서 증가함에 따라 32비트 주소 공간은 매우 작아지고 있습니다.

메모리 집약적인 프로세스를 여러 개의 작은 프로세스로 분할해 볼 수 있습니다. 또는 응용 프로그램을 64비트 컴퓨터로 이동합니다.

답변2

스왑 파티션 유형이 잘못되었습니다. for 및 for 를 fdisk -l반환해야 합니다 . 올바른 유형이 생성되어야 합니다.82IdLinux swap / SolarisSystemmkswap /dev/mmcblk1p1

보다https://help.ubuntu.com/community/SwapFaq. 또 다른 가이드는 다음과 같습니다:http://www.thegeekstuff.com/2010/08/how-to-add-swap-space/.

관련 정보