loopデバイスのスケジュラってどうなっているのか?

loopデバイスのスケジュラってどうなっているのかチェックしてみた。 Ubuntu 20.04 LTS の Linuxカーネル 5.4.0 ではこうなっていた。備忘録として。

Ubuntu 20.04.1 LTS (Focal Fossa)

$ for i in  /sys/block/*/queue/scheduler; do  echo -n $i ' ' ; cat  $i; done
/sys/block/loop0/queue/scheduler  [mq-deadline] none
/sys/block/loop1/queue/scheduler  [mq-deadline] none
/sys/block/loop2/queue/scheduler  [mq-deadline] none
/sys/block/loop3/queue/scheduler  [mq-deadline] none
/sys/block/loop4/queue/scheduler  [mq-deadline] none
/sys/block/loop5/queue/scheduler  [mq-deadline] none
/sys/block/loop6/queue/scheduler  [mq-deadline] none
/sys/block/loop7/queue/scheduler  [mq-deadline] none
/sys/block/loop8/queue/scheduler  [mq-deadline] none
/sys/block/loop9/queue/scheduler  [mq-deadline] none
/sys/block/nvme0n1/queue/scheduler  [none] mq-deadline 

$ cat /proc/version
Linux version 5.4.0-54-generic (buildd@lcy01-amd64-024) (gcc version 
9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #60-Ubuntu SMP Fri Nov 6 10:37:59
 UTC 2020

フリーソフトウェアとそれを取巻く世界の状況 (2007)

ツイッターで「オープンソース」についてオープンソースに自由という概念を付け加えるべきである、みたいなことをいっているのを読んだ。1998年にフリーソフトウェアという言葉を忌避するため、会議で「オープンソース」という言葉を作った人たちがいる。自由を抜いたオープンソースという言葉に、自由を加えよという人が出てくるぐらい、22年という時間は長いということなのだろう。10年ひと昔というが「ふたむかし」であるし、1年を7年に数えるドックイヤーでは「154年」である。確かにもう遠いむかしだ。

これもむかしの話であるが、2007年に大阪市立大学大学院創造都市研究科ワークショップにおいて「フリーソフトウェアとそれを取巻く世界の状況」というタイトルで講演したことがあり、その中でフリーソフトウェアという立場からいかにオープンソースという言葉がいかに堕落しているかを示した。その時のスライドの公開版を作ったのでpdf化して載せておく。当時使っていたフォントと誤字脱字は修正してある。

Pythonのnumpyライブラリは思っていたより高速だった

画像を処理しようとR-G-Bの各々の値をいじくろうとして、古典的にimage[i][j]を書き換えていたらメッチャ遅かった。こういう時こそ行列でまるごと計算できるnumpyの登場だよな、と思って処理したらメッチャ速かった。どの程度速くなるかは使っているハードウェア依存だと思うけれど、とりあえず、どれくらい速いか試してみる価値はある。ちなみに下のテストコードをpython3.7.3 + Intel Core i7-6500U CPU @ 2.50GHzの組み合わせで動かすと800から1000倍程度速かった。

#!/bin/env python
import numpy as np
import time
hw=(720,1280)
ma = np.full_like(np.zeros(hw, np.int16), 64, dtype=np.int16)
mb = np.full_like(np.zeros(hw, np.int16), 128, dtype=np.int16)
t0 = time.time()
mc = ma + mb
t1 = time.time()
t2 = t1 - t0
print("ma + mb: "+ str(int(t2*100000)/100) + "ms")
t0 = time.time()
for i in range(hw[0]):
    for j in range(hw[1]):
        mc[i][j] = ma[i][j] + mb[i][j]
t1 = time.time()
t3 = t1 - t0
print("ma[i][j] + mb[i][j]: "+ str(int(t3*100000)/100) + "ms")
print("np is " + str(int(t3/t2)) + " times faster than loop calc.")