Ubuntu マシンの状態確認系コマンドメモ

いつものこのあたりのコマンドを忘れていちいちググることになるのでメモしておく。

OSのバージョンを確認したい

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"

ストレージの使用量を確認したい

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev             16G     0   16G   0% /dev
tmpfs           3.2G  9.7M  3.2G   1% /run
/dev/nvme0n1p2  438G   12G  405G   3% /
tmpfs            16G  1.4M   16G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs            16G     0   16G   0% /sys/fs/cgroup
/dev/nvme0n1p1  511M  3.4M  508M   1% /boot/efi
tmpfs           3.2G   92K  3.2G   1% /run/user/1000

メモリの使用量を確認したい

$ free -h
              total        used        free      shared  buff/cache   available
Mem:            31G        1.7G         27G         41M        2.0G         28G
Swap:           31G          0B         31G

CPUの使用率を確認したい

TODO

GPUの使用率を確認したい

TODO

自作PC UnixBench結果

この↓自作PCでUnixBench動かした結果

hkou.hatenablog.com

~/program$ mkdir unixbench
~/program$ cd unixbench/
~/program/unixbench$ git clone https://github.com/kdlucas/byte-unixbench.git
Cloning into 'byte-unixbench'...
remote: Counting objects: 165, done.
remote: Total 165 (delta 0), reused 0 (delta 0), pack-reused 165
Receiving objects: 100% (165/165), 184.98 KiB | 196.00 KiB/s, done.
Resolving deltas: 100% (77/77), done.
Checking connectivity... done.


~/program/unixbench$ cd byte-unixbench/UnixBench
~/program/unixbench/byte-unixbench/UnixBench$ ./Run 


   #    #  #    #  #  #    #          #####   ######  #    #   ####   #    #
   #    #  ##   #  #   #  #           #    #  #       ##   #  #    #  #    #
   #    #  # #  #  #    ##            #####   #####   # #  #  #       ######
   #    #  #  # #  #    ##            #    #  #       #  # #  #       #    #
   #    #  #   ##  #   #  #           #    #  #       #   ##  #    #  #    #
    ####   #    #  #  #    #          #####   ######  #    #   ####   #    #

   Version 5.1.3                      Based on the Byte Magazine Unix Benchmark

   Multi-CPU version                  Version 5 revisions by Ian Smith,
                                      Sunnyvale, CA, USA
   January 13, 2011                   johantheghost at yahoo period com

Wide character in print at ./Run line 1577.
Wide character in printf at ./Run line 1608.

1 x Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10

1 x Double-Precision Whetstone  1 2 3 4 5 6 7 8 9 10

1 x Execl Throughput  1 2 3

1 x File Copy 1024 bufsize 2000 maxblocks  1 2 3

1 x File Copy 256 bufsize 500 maxblocks  1 2 3

1 x File Copy 4096 bufsize 8000 maxblocks  1 2 3

1 x Pipe Throughput  1 2 3 4 5 6 7 8 9 10

1 x Pipe-based Context Switching  1 2 3 4 5 6 7 8 9 10

1 x Process Creation  1 2 3

1 x System Call Overhead  1 2 3 4 5 6 7 8 9 10

1 x Shell Scripts (1 concurrent)  1 2 3

1 x Shell Scripts (8 concurrent)  1 2 3
Wide character in printf at ./Run line 1550.

12 x Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10

12 x Double-Precision Whetstone  1 2 3 4 5 6 7 8 9 10

12 x Execl Throughput  1 2 3

12 x File Copy 1024 bufsize 2000 maxblocks  1 2 3

12 x File Copy 256 bufsize 500 maxblocks  1 2 3

12 x File Copy 4096 bufsize 8000 maxblocks  1 2 3

12 x Pipe Throughput  1 2 3 4 5 6 7 8 9 10

12 x Pipe-based Context Switching  1 2 3 4 5 6 7 8 9 10

12 x Process Creation  1 2 3

12 x System Call Overhead  1 2 3 4 5 6 7 8 9 10

12 x Shell Scripts (1 concurrent)  1 2 3

12 x Shell Scripts (8 concurrent)  1 2 3
Wide character in printf at ./Run line 1550.

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: : GNU/Linux
   OS: GNU/Linux -- 4.4.0-87-generic -- #110-Ubuntu SMP Tue Jul 18 12:55:35 UTC 2017
   Machine: x86_64 (x86_64)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   CPU 0: Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz (7007.8 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
   CPU 1: Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz (7007.8 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
   CPU 2: Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz (7007.8 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
   CPU 3: Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz (7007.8 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
   CPU 4: Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz (7007.8 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
   CPU 5: Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz (7007.8 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
   CPU 6: Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz (7007.8 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
   CPU 7: Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz (7007.8 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
   CPU 8: Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz (7007.8 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
   CPU 9: Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz (7007.8 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
   CPU 10: Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz (7007.8 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
   CPU 11: Intel(R) Core(TM) i7-7800X CPU @ 3.50GHz (7007.8 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
   22:47:10 up 58 min,  1 user,  load average: 0.64, 0.44, 0.29; runlevel 2017-07-28

------------------------------------------------------------------------
Benchmark Run: 金  728 2017 22:47:10 - 23:15:45
12 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       43680549.5 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     4047.2 MWIPS (13.0 s, 7 samples)
Execl Throughput                               1625.7 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks       1440146.6 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          400120.6 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       2858191.9 KBps  (30.0 s, 2 samples)
Pipe Throughput                             2768809.9 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  13225.7 lps   (10.0 s, 7 samples)
Process Creation                               5428.8 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   5830.1 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   5198.0 lpm   (60.0 s, 2 samples)
System Call Overhead                        5281593.0 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   43680549.5   3743.0
Double-Precision Whetstone                       55.0       4047.2    735.9
Execl Throughput                                 43.0       1625.7    378.1
File Copy 1024 bufsize 2000 maxblocks          3960.0    1440146.6   3636.7
File Copy 256 bufsize 500 maxblocks            1655.0     400120.6   2417.6
File Copy 4096 bufsize 8000 maxblocks          5800.0    2858191.9   4927.9
Pipe Throughput                               12440.0    2768809.9   2225.7
Pipe-based Context Switching                   4000.0      13225.7     33.1
Process Creation                                126.0       5428.8    430.9
Shell Scripts (1 concurrent)                     42.4       5830.1   1375.0
Shell Scripts (8 concurrent)                      6.0       5198.0   8663.3
System Call Overhead                          15000.0    5281593.0   3521.1
                                                                   ========
System Benchmarks Index Score                                        1406.6

------------------------------------------------------------------------
Benchmark Run: 金  728 2017 23:15:45 - 23:43:58
12 CPUs in system; running 12 parallel copies of tests

Dhrystone 2 using register variables      339375066.4 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                    54080.0 MWIPS (10.0 s, 7 samples)
Execl Throughput                              30202.4 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        985493.9 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          270066.8 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       2958739.9 KBps  (30.0 s, 2 samples)
Pipe Throughput                            20674889.6 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                3119310.6 lps   (10.0 s, 7 samples)
Process Creation                              26741.0 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                  73719.0 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                  10632.5 lpm   (60.0 s, 2 samples)
System Call Overhead                        8462103.8 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0  339375066.4  29081.0
Double-Precision Whetstone                       55.0      54080.0   9832.7
Execl Throughput                                 43.0      30202.4   7023.8
File Copy 1024 bufsize 2000 maxblocks          3960.0     985493.9   2488.6
File Copy 256 bufsize 500 maxblocks            1655.0     270066.8   1631.8
File Copy 4096 bufsize 8000 maxblocks          5800.0    2958739.9   5101.3
Pipe Throughput                               12440.0   20674889.6  16619.7
Pipe-based Context Switching                   4000.0    3119310.6   7798.3
Process Creation                                126.0      26741.0   2122.3
Shell Scripts (1 concurrent)                     42.4      73719.0  17386.6
Shell Scripts (8 concurrent)                      6.0      10632.5  17720.9
System Call Overhead                          15000.0    8462103.8   5641.4
                                                                   ========
System Benchmarks Index Score                                        7214.8

Ubuntu16.04 LTS環境構築 備忘録

以下のページで組んだPCの環境構築手順まとめ

hkou.hatenablog.com

アップデート

sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade

ディスプレイドライバのインストー

Nouveauドライバ無効化

sudo vi /etc/modprobe.d/blacklist-nouveau.conf

↓以下を記述
blacklist nouveau
options nouveau modeset=0

再読込

sudo update-initramfs -u

GTX1080Tiのドライバインストー

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-381

機械学習系ライブラリのインストー

CUDAのインストー

Nvidia Developperのサイトからdebファイルをダウンロードする CUDA Toolkit Download | NVIDIA Developer

f:id:hkou:20170729080226p:plain

sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda

cuDNNのインストー

次はcuDNNをインストールする。ダウンロードするにはデベロッパー登録が必要だが、以前Windows10上にtensorflowを環境構築したときに作ったアカウントがあるのでそれを利用した。

https://developer.nvidia.com/rdp/cudnn-download

hkou.hatenablog.com

sudo tar xvf cudnn-8.0-linux-x64-v5.1.tgz -C /usr/local
sudo apt-get -y install libcupti-dev
sudo shutdown -r now

libcupti-devのインストー

sudo apt-get -y install libcupti-dev

Gitのインストー

sudo apt-get install git

gitをインストールしたら各種confiを設定

git config --global user.name "******"
git config --global user.email "******"
git config --global core.quotepath false

vimのインストー

最初から入っているvimは使い物にならなかったのでインストー

sudo apt-get install vim

SSH

Server(Ubuntu側)

SSH Serverは標準では入ってないっぽいのでインストー

sudo apt-get install openssh-server

設定をセキュアにする

sudo vi /etc/ssh/sshd_config

ポート番号を変更する(↓は例、別の値にした)

# What ports, IPs and protocols we listen for
Port 1000

rootログインの禁止

PermitRootLogin no

パスワードログインの禁止

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

鍵認証できる設定になっているか確認

RSAAuthentication yes
PubkeyAuthentication yes

認証用の鍵を作成する(クライアント(Windows10側))

git-bashssh-keygenを利用する。
RSAの4096bitのキーを作成
パスフレーズを聞かれるので設定する。

$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/user/.ssh/id_rsa.
Your public key has been saved in /c/Users/user/.ssh/id_rsa.pub.

作成した公開鍵(id_rsa.pub)をサーバー側へ転送

dropbox経由した。

公開鍵を登録

mv id_rsa.pub ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

SSHしてみる

Windows側のSSH ClientはRLoginを使用している。

  • Server Address
  • Socket Port
    • sshd_configで書き換えたポート番号を指定
  • User Name

f:id:hkou:20170729093717p:plain

左側ツリーの「サーバー」→プロトコルから認証キーを押下

f:id:hkou:20170729093916p:plain

ファイル/インポートから先程作成した秘密鍵を選択してOK

f:id:hkou:20170729094001p:plain

これでSSHで接続ができた

Java8のインストー

sudo add-apt-repository ppa:webupd8team/java
sudo apt update
sudo apt install oracle-java8-installer

インストールできたことを確認

$ javac -version
javac 1.8.0_131
$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

SBTのインストー

sbt Reference Manual — Installing sbt on Linux

echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
sudo apt-get update
sudo apt-get install sbt

自作PCを組んだ

以前、わりとスペックの良いノートPCを購入して、「これで何でも出来る」と思ってたけど、意外とマシンスペックが足りなく感じたり、機械学習みたいな重いプログラムをノートPCで動かしてると壊れるんじゃないかという不安を感じてきたので自作PCを組むことにした。 hkou.hatenablog.com

構成

  • CPU
    • Core™ i7-7800X(8.25M キャッシュ, 最大 4.30 GHz, 6Core 12Thread)
  • マザーボード
    • ASUS TUF X299 MARK 2
  • GPU
  • メモリ
    • CMK32GX4M2A2666C16 (16GB * 2 = 32GB)
  • SSD
    • WD WDS512G1X0C (PCIe Gen3 NVMe 8Gbs)
  • CPUクーラー
    • 虎徹 MarkII  SCKTT-2000
  • 電源
    • RM650x (CP-9020091-JP)

組み立て

購入したパーツ達

f:id:hkou:20170727120959j:plain

マザーボード開封

f:id:hkou:20170727212815j:plain

GPU開封

パーツの中で一番金をかけたのがこの部分。歴代GPUで一番良いものを購入している。
中箱 f:id:hkou:20170727212952j:plain

中箱を開封するとドライバのCDが入っていた f:id:hkou:20170727213005j:plain

GTX1080Ti。ずっしりと重い f:id:hkou:20170727213052j:plain

前自作マシンで使っていたGTS250との比較。長さが1.5倍ぐらい違う f:id:hkou:20170727213914j:plain

電源開封

650Wにした。新しいパーツを増設していくには少し物足りないかもしれない。 f:id:hkou:20170727215934j:plain

f:id:hkou:20170727220117j:plain

マザーボードGPUを指した

平置きにして刺さないとGPUの重みでPCIEスロットが折れそうな感じがする。 f:id:hkou:20170727222404j:plain

メモリ

人権(32GB) f:id:hkou:20170727222531j:plain

f:id:hkou:20170727222721j:plain

SSD

SSDはそこまでスピード必要無さそうなのでM.2 SSDで安めのものを購入

f:id:hkou:20170727222552j:plain

CPU

LGA2066のCorei Xシリーズでそれなりにスペックもあって、安めのものを購入 f:id:hkou:20170727223014j:plain

CPUクーラー

LGA2066が出たばっかりなので、この規格に合うCPUクーラーの情報が全然見つからなかった。とりあえずこれは使えるという情報があったので購入。情報どおりちゃんと使えた。

f:id:hkou:20170727223846j:plain

f:id:hkou:20170727223928j:plain

組み上がった

2,3時間かけて組み上げた。久しぶりに自作PC組んだので時間がかかった。後から外したりするかもしれないと思って電源はわざと外してある。

f:id:hkou:20170727233901j:plain

UEFI起動画面

PCを立ち上げるとUEFIが立ち上がった。メモリやCPUなどもちゃんと認識できているっぽい。 f:id:hkou:20170727234924j:plain

Ubuntuインストー

OSはUbuntu 16.04 LTSをインストールする。
Ubuntu 16.04 LTS 日本語 Remix のisoをダウンロードしておく。

Ubuntu 16.04 LTS 日本語 Remix リリース | Ubuntu Japanese Team

Live USBを作成する(失敗したパターン)

Universal USB Installerを使って上記でダウンロードしてきたiso をもとにLive USBを作成。
そのままUbuntuをインストールしようとしたが、OSインストール途中で以下のエラーが発生して失敗

GRUB を/dev/nvme0n にインストールできません。」

Live USBを作成する(成功したパターン)

今度はRufusを元にインストールUSBを作成。これを使ったらうまくインストールが成功した forest.watch.impress.co.jp f:id:hkou:20170728073042j:plain

DOMで遊んでみる

DOMについて

  • DOM(Document Object Model
    • プラットフォームに中立的なイベント・ノードツリーのモデル

DOMの仕様

DOMとHTML

HTMLはツリー構造でありDOMで表現できる。例えば以下のHTMLは以下のような構成(図)になる。

<html>
    <head></head>
    <body>
        <h1>HelloWorld</h1>
    </body>
</html>

f:id:hkou:20170702074735p:plain

ChromeでDOMを確認する

空のHTMLファイル

空のHTMLファイルを作成する。(empty.html
Chromeで開き、デベロッパーツール(Ctrl+Shft+I)で確認してみる。

f:id:hkou:20170702075511p:plain

ファイルの中身は空のはずなのにElementが作成されている。HTMLの最小構成ということだろうか。

閉じたツリー

以下のような閉じたツリーは作れるだろうか

f:id:hkou:20170702080153p:plain

bodyの下にbodyを付けてみたがDOMExceptionがthrowされてしまった。 f:id:hkou:20170702080353p:plain

DOMを操作するAPI

ルートノード取得

document.getRootNode()

IDを指定してノード取得

var elm = document.createElement("div");
elm.id = 'elm_id';
document.body.append(elm);

document.getElementById('elm_id');

クラスを指定してノード取得

var div = document.createElement("div");
div.classList.add("test_class");

document.body.appendChild(div);
document.getElementsByClassName("test_class");

CSSセレクタを指定してノード取得

// 1件取得
document.querySelector(".test_class");

// 全件取得
document.querySelectorAll(".test_class")

ノードの作成

var elm = document.createElement("div");

子ノードに追加

var elm = document.createElement("div");
document.body.appendChild(elm);

ノードの削除

var div = document.createElement("div");
document.body.appendChild(div);

// 子要素の削除
document.body.removeChild(div);

DOMとイベント

  • TODO

  • キャプチャフェーズ

  • ターゲットフェーズ
  • バブリングフェーズ

DOMとCSS

HTMLElement.styleプロパティにCSSStyleDeclarationオブジェクトとして格納されている。
ただしstyleプロパティはインラインstyle属性で設定されたCSS宣言のみしか取得できない。

document.body.style.cssText = "color: red";

document.body.style.color = "red"

外部のCSSファイルから適用されたCSSプロパティも含めた値を取得する場合は以下

window.getComputedStyle(document.body, null);

日帰り温泉&養老山ツーリング

天気が良かったので近所のツーリング&温泉へ行ってきた。

庭田山頂公園(養老山頂)

山頂公園に行く途中で休憩所みたいになっていたところで撮った写真。下に見えるつづら折りになっている峠道をバイクで走りました。 f:id:hkou:20170604134948j:plain

山頂公園からの見晴らし。有名なヒルクライムスポットらしくロードをよく見かけた。 f:id:hkou:20170604140032j:plain

道の駅 池田温泉

池田温泉には入らなかったが、この道の駅で昼ごはんを食べた。

蒸し牡蠣。レモン汁をかけて食べた。もっと食べたい。 f:id:hkou:20170604153135j:plain

たこ焼き f:id:hkou:20170604154154j:plain

マンゴーソフト。安定のスジャータ f:id:hkou:20170604155303j:plain

久瀬温泉 白龍の湯

九州温泉巡りツーリングへ行ったときに最初に入った温泉。 hkou.hatenablog.com

露天風呂しかないけど、人が少なくてゆっくり入れた。

f:id:hkou:20170604163657j:plain

ScalaでSlack botを作った

某社のチャット上で動作する勤怠システムを見て、自分も欲しくなったので作ってみた。
ソースコードは以下に配置した。

github.com

とりあえず勤怠の記録、参照する部分を作成したがまだまだ全然できていない。
AWSかAzureで運用するつもり
以下備忘録

構成