にほんブログ村 IT技術ブログへ
にほんブログ村

Linux ブログランキングへ

2021年11月29日

Ubuntu改造日記 Swap圧縮 zwap 初期設定 その111



こんばんは。
今日はUbuntuでSwapを圧縮するZswapの設定。
メモリが足りないマシンではSwap領域が必要になりますが、
圧縮して容量を節約するZswapです。
おすすめ機種はSSDの容量が特に少ないPCです。
重くなるのでSwapを拡張する余裕のあるストレージには不要かもしれません。
標準のKernelでそのまま対応出来ます。

●Zswap
Swapを圧縮して節約するZswapです。
Zramと違うのは、RAMを圧縮するZramとストレージを圧縮するZswapの違いです。
つまりSwapファイルか領域が必ず必要になります。
長所としてはメモリ領域を圧縮しない事ですが、速度的にはZramに負けます。
しかしストレージ領域に大量にSwapを確保出来ますので固まらない、落ちない
圧縮RAM環境を作りたい時にZswapは役にたちます。

Ubuntuの場合、Kernelが標準で対応しているので
ブートパラメータに追加するだけで使えます。

sudo nano /etc/default/grub

10行目あたりを下記に修正します。
quit splashの後に追記。

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash zswap.enabled=1 zswap.compressor=lzo"

保存したらgrubをアップデート。
圧縮方式を変えたい時はlz4を変更してみてください。

sudo update-grub

grubファイルをアップデートしたら再起動。
それだけでOKです。
動作確認は下記のコマンドを実行

sudo dmesg | grep "zswap: "

●まとめ
設定は簡単ですが、重くなります。ガリガリです。
しかしメモリが少なくてもアプリが落ちにくくなります。
使っていないキャッシュなどもZswapに送って圧縮しますので
ややメモリを空けられます。
WindowsタブレットやChromebookの様なSSD容量の小さいPCにオススメ。

ZramとZswapを併用すると安定化しますが重くなります。
それでも良い人にはとても役に立ちます。
逆に重くしたくない人には要注意かも。
posted by kapper at 19:21 | Comment(0) | Ubuntu

2021年11月23日

Ubuntu改造日記 wubi for UbuntuのSwapfile容量変更 その110



今日は笠松競馬場でブログを書いています。
平日は仕事なので祝日しか行けないのです。
それはさておき、LinuxネタとしてWubiのSwap
標準容量が小さくて困っている人向け。

●WubiのSwap容量
WubiのSwapは確か2GBでしたっけ?小さいです。
元々本体容量がコンパクト目に作られているので
Swapもそれに合わせているのでしょうか?
Windowsタブレットとか。
しかしやはり使いにくい。Swapが埋まると固まります。
ので容量を変更します。参考はこちら。感謝。

https://www.webdevqa.jp.net/ja/wubi/wubi%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%92%E5%A2%97%E3%82%84%E3%81%99%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F/957241030/amp/

じゃあやってみます。
まずSwapが空の状態、つまり再起動して直後で

sudo su
swapoff -a
cd /Host/ubuntu/disks/
mv swap.disk swap.disk.bak
dd if=/dev/zero of=swap.disk bs=1024 count=((1024 * 1024 * 4))
mkswap swap.disk
swapon -a
free -m

ここで注意なのはfallocateコマンドではエラーが出ますのでddコマンドを。
Swapを未使用の状態じゃないと固まる。
zramやzswapを使っている人は一旦再起動した方が良いです。
/etc/fstabではswapの場所が固定されているので、
名前と場所を変更しなければOK。
無事Swapサイズが変更されていればOK。
簡単ですよね。

●まとめ
目的はハイバネーションしたかったからですがエラーが出てます。
あまりSSDでSwapを使いたくはないですが。
メモリが少ない機種はどうしてもSwapを使わざるを得ないので
古い機種では多めに確保しましょうか。



posted by kapper at 21:07 | Comment(0) | Ubuntu

2021年11月22日

Ubuntu改造日記 コマンドラインでSuspend Hibernate 自動化 その109



今日はUbuntuを含めたLinuxディストリでコマンドライン。
特別な内容ではありませんが、あると便利な感じ。
主に電車の中でコマンドで落としてそのまま待機という感じが。
シェルスクリプトの最後に入れても良いかも。

●コマンドラインSuspend Hibernate
特に特別な内容ではありませんが、WMのメニューを開いてちょっと待たされて
シャットダウン画面をポチするよりそちらの方が待ち時間は短いな、とw
意外と面倒で不便なのよ、コレ・・・

サスペンドスリープ
sudo systemctl suspend

ハイバネーション
sudo systemctl hibernate


Ubuntuの場合、標準で装備されています。
ハイバネーションを使うときはメモリ容量以上のSwap容量が必要なので注意。

これをシェルスクリプトの最後に入れておくと、移動中にも作業しながら最後に勝手に落ちるので便利です。
もちろんノートパソコンの蓋を閉じる時の自動サスペンドはOFFにする必要がありますが。

・一例:サーバにファイルをアップデートしてからサスペンド
・一例:RPA(SikuliX)が終わったら落とす
・一例:wgetでダウンロードが終わったら落とす

使い方一つですね。
もちろんシャットダウンする時は何時もどおりshutdown -h nowで・・・
節電節電
posted by kapper at 12:18 | Comment(0) | Ubuntu

2021年11月21日

シンプル・ミニマムOS #archLinux Lets noteのサウンドが鳴らない対策 Realtek ALC269VC その18


昔書いたLet's Noteの音が鳴らないRealtek ALC269VC対策ですが
もう一度やってみたのでブログにする。
最近のUbuntuでは解消されている?
Archだし・・・

●ealtek ALC269VC問題
Let'S Noteによく採用されていたealtek ALC269VCですが
alsamixerで何故か主音源がヘッドフォン側になっていて、
初期ではOFFにしてあるので音が出ないというバグ。

let's noteで音量調整ができない Ubuntu18.04編
https://kinacon.hatenablog.com/entry/2018/07/29/083302

仕方がないのでalsamixerでヘッドフォンの音声を上げると音がでます。
まあここはいつもどおり。
毎回それは面倒なので設定を保存します。
音声出力をalsamixerで設定してから

alsactl --file ~/.config/asound.state store

で設定内容を保存。それを起動時に実行。
自動実行の方法は何でも良いですが、

nano .bashrc

で最後に保存

alsactl --file ~/.config/asound.state restore

でターミナル実行時に動きます。
手抜きw

●まとめ
いつまで残るLet' Noteのサウンド問題。
自動実行はなんでも良いです。好きな方法で。
systemctl使っても.bashrcでも.profileでもcrontabでも。
どうしてこのバグ治らないんでしょうね・・・
もう長年のバグ。不思議です。
posted by kapper at 21:00 | Comment(0) | Arch Linux

シンプル・ミニマムOS #archLinux libnsl.so.2 が見つからないエラーのバグ対策 その17


再びArchLinux。
サブマシンのLet's Note NX4を起動したらAURでエラー。
ググると21年10月時点のエラーです。
シンボリックリンクが繋がっていないそうです。
初心者泣かせのバグがたまに出るのがArchの良い所w

●libnsl.so.2のバグ
yayでAURをアップデートしようとすると、
libnsl.so.2が見つかりません、というエラーが出た。
なんじゃそりゃ、と思ってググるとバグ報告あり

https://www.reddit.com/r/neovim/comments/pljvqu/libnslso2_cannot_open_shared_object_file/hgexgsy/

https://bugs.archlinux.org/task/72069

https://github.com/hercules-390/hyperion/issues/289

ああ、つい最近の話ね。
という事で読んでみると、
/usr/lib/libnsl-2.xx.soをlibnsl.so.2にシンボリックリンクを
繋いで更新作業をやってるぽいけど、繋がっていないとの事。
まあ急に出たのならバグですな。
対策として

ln -s /usr/lib/libnsl-2.33.so /usr/lib/libnsl.so.2

みたいにln -sしてみると繋がりました。
簡単ですが見つけるまでに苦労しましたが、良しとします。
そのうち治るでしょうか。

●まとめ
ググったら既に報告があって良かったです。
Archは突発的なバグが出るので毎日更新は当たる確率が上がるので止めましょうw
バグをググるスキルが必要なのがローリングリリースの弱点かな。
バグがリリースされてしまう。

これバージョンアップするたびにパッケージにスプリクトで
作業しているはずなんだろうな、と思いつつ。
エラーメッセージに注意してご注意を。
posted by kapper at 16:32 | Comment(0) | Arch Linux

2021年11月20日

Ubuntu改造日記 省メモリ キャッシュ開放 drop_caches書き戻し その108



今回は少ないメモリのPCを有効活用させようと
省メモリ化を考えてみます。
ただしdrop_cachesの書き戻しは本来なら、有効活用しなくても
良いものであり常用する必要がない事を前もってご一報しておきます。
ブラウザ限定などで。


●メモリ4GBの苦悩と省メモリ
メモリ4GB以下のPCではブラウザを使うとメモリが足りなくなって
Swap多発して固まります。非常にイライラします。
ブラウザのメモリを少なく使うのは当然ですが、

Linuxはバッファとキャッシュを高速化させるためにどんどんメモリに
溜めていき、メモリが足りなくなると開放する仕組みです。
所が最近のブラウザ関係は完全には開放されず
僅かづつメモリに残っている気がしています(要計測
なので気がついたらSwapガリガリしていることが多く感じます。
なのでバッファとキャッシュを開放させます。
本質的には不要な作業です。
参考はこちら。

https://www.tecmint.com/clear-ram-memory-cache-buffer-and-swap-space-on-linux/

本来そんな作業はいらないだろう、と思っていたのでやっていませんでした。
まあブラシーボならいいんですけどね。


●バッファ、キャッシュの開放
やり方は簡単で、echo "echo 3 > /proc/sys/vm/drop_caches"を
crontabに登録して定期的に実行するだけです。
ただしこのコマンドはスーパーユーザー権限で無いと動かないのでご注意を。
まず適当にclearcache.shファイルを作成します。

sudo su
nano /opt/clearcache.sh

で下記をコピペ

#!/bin/bash
sync; sh -c "echo 3 > /proc/sys/vm/drop_caches"


保存したら、権限を変更します。

chmod 755 /opt/clearcache.sh

で動かしてみます。

/opt/clearchace.sh

で画面にエラーがでなければOK
エラーが出た場合権限をスーパーユーザー権限にしましょう。

(base) [root@kapper opt]# free -m
total used free shared buff/cache available
Mem: 7867 2095 1474 335 4297 5135
Swap: 5005 0 5005
(base) [root@kapper opt]# sync; sh -c "echo 3 > /proc/sys/vm/drop_caches"
(base) [root@kapper opt]# free -m
total used free shared buff/cache available
Mem: 7867 2212 4526 339 1127 5070
Swap: 5005 0 5005

基本的にあまり変わりませんが、メモリがちょこっと増えました。
これをcrontabで定期的に実行します。
もちろんスーパーユーザー権限で

crontab -e

でviの画面が出てきたら下記を書き込み保存。

0 * * * * /opt/clearcache.sh

まあ1時間に1回実行するコマンドです。
これで定期的にバッファやキャッシュを書き出します。

●まとめ
本来は不要なんですが、メモリが少ないPCでのみ使えます。
4GB以上のPCなら不要でしょう。
もともと高速読み出しのためのキャッシュです。

最近のブラウザのメモリの使い方が荒いんでしょうか。
Swapをいちいち使われるとうっとおしいです。
他にswapoff -a && swapon -aコマンドもありましたが、
メモリが無い状態で実行すると固まりますので止めましょう。
では快適なLinux生活を・・・
posted by kapper at 10:55 | Comment(0) | Ubuntu

2021年11月12日

SikuliXで他のブログラムをサブルーチンとして呼び出して使う方法 RPA その1


今回はSikuliXで他のブログラムをサブルーチンとして呼び出す方法。
それらしい事は色々なサイトに書いてありますが、どうも理解出来ないw
やってみると意外と便利で使いまわしが簡単になるので良いです。
SikuliXは細かい使い方がいまいち日本語情報が少なくてやりにくいですけど

●SikuliXのサブルーチン
プログラムは長いとウザいですが、RPAの場合はどうしても長くなりがち。
なのでサブルーチン的な使い方をしたいのですが、
意外と検索エンジンにヒットしてこない。本にも書いてない。

しかもこのプログラムを延々と伸ばすのも、
小さい単位にして組み合わせた方が便利。
ここなどを参考に書いてみましょう。感謝。

https://inkoblog.com/how-to-reuse-sikulixscript/

●サブルーチン化
メインとなるコードとサブルーチンとするコードを書きます。割愛
(サブルーチン名)には作ったファイル、フォルダ名をそのまま。
文頭の3行と呼び出すサブルーチンのPathをsys.path.append()を
前もってフルパスで指定しておかないと認識しませんので注意

・メインルーチン側

# -*- coding: utf-8 -*-
import sys
from sikuli import *

sys.path.append(r:"C:\Users\(ユーザー名)\(サブルーチン名).sikuli")

import (サブルーチン名)


ざっくりですが、ここまで。
最後のimport (サブルーチン名)の行でサブルーチンのプログラムを実行しますw
Pythonってそういう文法だったっけ?

・サブルーチン側

# -*- coding: utf-8 -*-
import sys
from sikuli import *

{プログラム本体}


という形にして最初の3行は必要です。
間違っているとエラーが出るはずです。
むしろエラーが出まくるので原因がわからなかったり。

●まとめ
これでプログラムをぶった切って、つないでリサイクル出来ます。
なんかPythonのややこしい所とSikuliXのややこしい所が合体して
よくわかりませんよね。プログラムの書き方がw

でサブルーチンを実行する部分がimport サブルーチン名
ってなんじゃそりゃー。
Pathも書かないとどこにサブルーチンがあるか分からないエラーが出る。
サブルーチンが1つ、2つ、3つと増えればPath行もそれだけ必要です。
なぜならプログラムが*.pyだけじゃなくてフォルダー単位なのがSikuliXの特徴だからです。
余計わかりにくい・・・
まあ作ってみて慣れましょうか。
動きゃOKです・・・
posted by kapper at 21:23 | Comment(0) | Python

2021年11月02日

Pythonトラブル対策集 Windows環境のCondaを職場でアップデートしたらProxyが繋がらなくなった対策 その1



今回は職場の先輩から「CondaでProxyが繋がらなくなった」という対策。
知っている人は知っているかもしれないが、ヤバイ。


●CondaのProxy設定
Proxy設定方法は.condarcファイルをc:\Users\(ユーザー名)\に置いて
Proxy設定を書き込むだけですが、
Condaをアップデートしたら繋がらなくなりました。
これはアカンという事でエラーメッセージをググるとgithubに報告がありました。

conda 4.7.12 ProxyError - proxy server settings that work with conda 4.3 fail with conda 4.7.12
#9497
https://github.com/conda/conda/issues/9497

かなり前の話ですが一応今年です。

従来は

ssl_verify: True
proxy_servers:
http: http://id:password@xxx.xxx.xxx.xxx:8080
https: https://id:password@xxx.xxx.xxx.xxx:8080

みたいな感じで書いて保存するんですが、これだとエラーが出ます。
正しくは、

ssl_verify: True
proxy_servers:
http: http://id:password@xxx.xxx.xxx.xxx:8080
https: http://id:password@xxx.xxx.xxx.xxx:8080

という感じでhttps: の後をhttp://〜に修正します。
ここの.condarcしか読まないので、再起動とかは不要です。
ちゃんとProxyに接続してCondaがネットに繋がりました。

●まとめ
簡単ですが、ヤバイです。
特に職場でCondaを使っている人は注意しましょう。
結構有名な話ですが、日本語文献にはまだあまり出てきませんので
エラーメッセージを1年以内条件でググらないとなかなか出てこないと思います。
もしProxyに繋がらなくなったら是非試してみて下さい。
posted by kapper at 20:00 | Comment(0) | Python
にほんブログ村 IT技術ブログへ
にほんブログ村

Linux ブログランキングへ