0. はじめに
oracle CloudのAlways Freeっていいよね。
どこまで使っても無料だそうで、とても太っ腹なOracleさんです。
しかし、4OCPU、24GBまで使えるVM.Standard.A1.Flex
は非常に人気で、既にリソースが枯渇しており、申し込むことができません。
そこで、まだ申込みできる VM.Standard.E2.1.Micro
の 1 OCPU(2 CPU)、1 Memory (GB) を使う事になります。
2 CPUは、そこそこという感じですが、メモリーが1GBなのは辛いですね。
なので、できるだけUbuntuの不要なものを止めてメモリーを確保する方法について書いてみたいと思います(といっても、空けられるのは恐らく10 MBぐらい)
1. Ubuntu の イメージを Canonical-Ubuntu-22.04-Minimal-2024.05.31-0
にする
まず最初から不要な物が入っていないMinimalのイメージを選択しましょう。
これで、大体この記事の言いたいことは終わりです。
これを使うと、used 166MBの最小インスタンスができあがります。
さらにここから乾いたぞうきんを絞ってきます。
1. graphical.targetを止める
Ubuntuを通常インストールするとグラフィカルなUIになりますが、これを止めましょう。
といっても、MinimalではそもそもGNOME Desktopも動いていないですし、Xサーバーなんてどこにもないのであまり意味はありませんが、不要なものがインストールされてしまわないとも限らないので、オフにしておきましょう。
sudo systemctl set-default multi-user.target
2. unattended-upgrades.service
を止める
unattended-upgrades.serviceは、自動的にパッケージをアップデートしたりしてくれる便利なサービスですが、自分でアップデートすればいいので、止めちゃいましょう。
$ systemctl status unattended-upgrades.service
● unattended-upgrades.service - Unattended Upgrades Shutdown
Loaded: loaded (/lib/systemd/system/unattended-upgrades.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2024-08-25 08:04:07 UTC; 1min 33s ago
Docs: man:unattended-upgrade(8)
Main PID: 603 (unattended-upgr)
Tasks: 2 (limit: 1065)
Memory: 12.8M
CPU: 324ms
CGroup: /system.slice/unattended-upgrades.service
└─603 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
12.8MB使っています。
sudo systemctl disable --now unattended-upgrades.service
3. ModemManagerを止める
$ systemctl status ModemManager.service
● ModemManager.service - Modem Manager
Loaded: loaded (/lib/systemd/system/ModemManager.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2024-08-25 07:07:19 UTC; 49min ago
Main PID: 721 (ModemManager)
Tasks: 3 (limit: 1065)
Memory: 2.3M
CPU: 349ms
CGroup: /system.slice/ModemManager.service
└─721 /usr/sbin/ModemManager
2.3MB使っています。これ求めましょう。
sudo systemctl disable --now ModemManager.service
4. iscsid.service
を止める
$ systemctl status iscsid.service
● iscsid.service - iSCSI initiator daemon (iscsid)
Loaded: loaded (/lib/systemd/system/iscsid.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/iscsid.service.d
└─restart-policy.conf
Active: active (running) since Sun 2024-08-25 07:07:17 UTC; 51min ago
TriggeredBy: ● iscsid.socket
Docs: man:iscsid(8)
Main PID: 682 (iscsid)
Tasks: 2 (limit: 1065)
Memory: 2.9M
2.9MBですね。止めましょう
sudo systemctl disable --now iscsid.service
5. rpcbind.service
を止める
まあ、いらないですね。
0.9MB使っています
systemctl status rpcbind.service
● rpcbind.service - RPC bind portmap service
Loaded: loaded (/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2024-08-25 07:07:02 UTC; 54min ago
TriggeredBy: ● rpcbind.socket
Docs: man:rpcbind(8)
Main PID: 437 (rpcbind)
Tasks: 1 (limit: 1065)
Memory: 984.0K
sudo systemctl disable --now rpcbind.service
6. 止めた結果
$ systemctl | grep running
proc-sys-fs-binfmt_misc.automount loaded active running Arbitrary Executable File Formats File System Automount Point
init.scope loaded active running System and Service Manager
session-1.scope loaded active running Session 1 of User ubuntu
dbus.service loaded active running D-Bus System Message Bus
getty@tty1.service loaded active running Getty on tty1
networkd-dispatcher.service loaded active running Dispatcher daemon for systemd-networkd
polkit.service loaded active running Authorization Manager
serial-getty@ttyS0.service loaded active running Serial Getty on ttyS0
snap.oracle-cloud-agent.oracle-cloud-agent-updater.service loaded active running Service for snap application oracle-cloud-agent.oracle-cloud-agent-updater
snap.oracle-cloud-agent.oracle-cloud-agent.service loaded active running Service for snap application oracle-cloud-agent.oracle-cloud-agent
snapd.service loaded active running Snap Daemon
ssh.service loaded active running OpenBSD Secure Shell server
systemd-journald.service loaded active running Journal Service
systemd-logind.service loaded active running User Login Management
systemd-networkd.service loaded active running Network Configuration
systemd-resolved.service loaded active running Network Name Resolution
systemd-timesyncd.service loaded active running Network Time Synchronization
systemd-udevd.service loaded active running Rule-based Manager for Device Events and Files
user@1001.service loaded active running User Manager for UID 1001
さすがにこれ以上は止められないですね。
snapdも止めたいところですが、最近のUbuntuはいろいろとsnapに頼っているところがあるので止められません。dbusも同じくです。
■各種設定前
$ free -m
total used free shared buff/cache available
Mem: 947 166 225 1 555 615
Swap: 0 0 0
■各種設定後
$ free -m
total used free shared buff/cache available
Mem: 947 121 524 0 301 687
Swap: 0 0 0
Usedが45MBほど減り、Freeは524MBに増えました。
$ cat /proc/meminfo
MemTotal: 970232 kB
MemFree: 522744 kB
MemAvailable: 690660 kB
Buffers: 16664 kB
Cached: 266160 kB
SwapCached: 0 kB
Active: 272852 kB
Inactive: 79060 kB
Active(anon): 70092 kB
Inactive(anon): 0 kB
Active(file): 202760 kB
Inactive(file): 79060 kB
まあまあでしょう。
7. おまけ
freeコマンドを見て分かると思いますが、クラウドのインスタンスは一般的にswapがありません。昔は、swapなんて、役に立たない100害あって1利無しとか思っていましたが、それはDiskスピードが遅かったからで、今はガンガンに早いSSDのお陰で問題なく利用できます。
2GBぐらいのスワップを用意して追加してみましょう。
sudo dd if=/dev/zero of=/swapfile bs=1024 count=2000000
sudo mkswap /swapfile
sudo chmod 0600 /swapfile
/swapfile swap swap defaults 0 0
sudo systemctl daemon-reload
sudo swapon /swapfile