この記事は、 NetBSD Advent Calendar 2018の9日目の記事です。
はじめに
port-arm
メーリングリストに、
jmcneill@
さんが、
NetBSD on AWS EC2 ARM instances
と言う投稿をされました。
AmazonがAmazon Web Service (AWS) EC2にa1インスタンスという64ビットARM (aarch64)を追加していますが、
その上でNetBSD/evbarm64が動くという話です。
今回は、jmcneill@
さんが、用意してくれたAMIを使って、a1.middleインスタンス
を作り、pkgsrc
を使ってみました。
AWS EC2 a1とは
AWS EC2 a1は、Amazonの独自に開発した64ビットARM CPUである
AWS Gravitation Processorで動くインスタンスのようです。
jmcneill@
さんが、
us-east-1
(N. Virginia)にAMIを用意してくれていますので、
us-east-1であれば何の苦もなくインスタンスを用意できるはずです。
今回は、a1.middleインスタンスを使ってみますが、これはCPU: 1基、RAM: 2GiBの インスタンスです。最大構成のa1.4xlargeですと、CPU: 16基、RAM: 32 GiBです。
a1.middleインスタンスを用意する
a1インスタンスだからと言って、特に特別なことはありません。
普通にAWSのインスタンスを作成していきます。
まずは、Community版のAMIで、ami-0c7624c662581e8fa
を検索して
選択します。ログイン用のssh鍵も生成し、ダウンロードしておきます。
次には、EBSディスクを割り当ててインスタンスを起動させます。
a1.middleインスタンスへログインする
ログインについては、NetBSD Wikiの記事に書かれている通りです。 生成したssh鍵の秘密鍵をダウンロードしてあると思います。それを使って、以下のようにログインします。
$ chmod 600 a1-privatekey.pem $ ssh -i a1-privatekey.pem root@aws-hostname-address
a1.middleインスタンスの初期設定をする
ログインはできましたが、あまりセキュリティー的に気持ちの良い状態ではありません。 ちょっと試すだけだとしても、以下のような設定はしておいた方が良いでしょう。
# useradd -m ryoon # passwd ryoon # su ryoon $ mkdir ~/.ssh $ chmod 700 ~/.ssh (手元の端末からssh公開鍵を転送し、~/.ssh/authorized_keysを用意する) # vi /etc/group wheel:*:0:root,ryoon (snip) operator:*:5:root,ryoon (snip) # vi /etc/ssh/sshd_config (snip) PasswordAuthentication no (snip) UsePam no # /etc/rc.d/ec2_init stop # vi /etc/rc.conf (snip) ec2_init=NO (snip)ここまで設定したら、別ターミナルから自分のユーザーID (ここでは
ryoon
)で
ログインしてみて、su
コマンドでroot
ユーザーになれる
ことまで確認します。成功したら、下のターミナルではログアウトして良いです。
a1.middleインスタンスを使ってみる
ここまでやれば、とりあえずは大きな不安はなく状況を確認できます。
最初に
$ uname -ap
NetBSD ec2-34-228-210-40.compute-1.amazonaws.com 8.99.26 NetBSD 8.99.26 (GENERIC64) #3: Fri Nov 30 14:40:13 AST 2018 jmcneill@toki.invisible.ca:/home/jmcneill/netbsd/cvs-src/sys/arch/evbarm/compile/obj/GENERIC64 evbarm aarch64
dmesg
は以下のようです。
------------------------------------------ kern_vtopdiff = 0xffffffbf85800000 physical_start = 0x0000000040000000 kernel_start_phys = 0x000000007a800000 kernel_end_phys = 0x000000007b42e000 msgbuf = 0x000000007c22c000 physical_end = 0x000000043b000000 VM_MIN_KERNEL_ADDRESS = 0xffffffc000000000 kernel_start_l2 = 0xffffffc000000000 kernel_start = 0xffffffc000000000 kernel_end = 0xffffffc000c2e000 pagetables = 0xffffffc000c2e000 pagetables_end = 0xffffffc000c39000 kernel_end_l2 = 0xffffffc000e00000 module_start = 0xffffffc000e00000 module_end = 0xffffffc002e00000 (kernel va area) (devmap va area) = 0xfffffffff0000000 VM_MAX_KERNEL_ADDRESS = 0xffffffffffe00000 ------------------------------------------ mpstart Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. NetBSD 8.99.26 (GENERIC64) #3: Fri Nov 30 14:40:13 AST 2018 jmcneill@toki.invisible.ca:/home/jmcneill/netbsd/cvs-src/sys/arch/evbarm/compile/obj/GENERIC64 total memory = 1952 MB avail memory = 1889 MB timecounter: Timecounters tick every 10.000 msec armfdt0 (root) simplebus0 at armfdt0: ACPI simplebus1 at simplebus0 acpifdt0 at simplebus0 acpifdt0: using EFI runtime services for RTC ACPI: RSDP 0x000000007C2D0014 000024 (v02 AMAZON) ACPI: XSDT 0x000000007C2C00E8 000064 (v01 AMAZON AMZNFACP 00000001 01000013) ACPI: FACP 0x000000007C2A0000 000114 (v06 AMAZON AMZNFACP 00000001 AMZN 00000001) ACPI: DSDT 0x000000007C230000 00154F (v03 AMAZON AMZNDSDT 00000001 INTL 20160108) CPI: APIC 0x000000007C2B0000 0000B8 (v03 AMAZON AMZNAPIC 00000001 AMZN 00000001) ACPI: SPCR 0x000000007C290000 000050 (v02 AMAZON AMZNSPCR 00000001 AMZN 00000001) ACPI: GTDT 0x000000007C280000 000060 (v02 AMAZON AMZNGTDT 00000001 AMZN 00000001) ACPI: MCFG 0x000000007C270000 00003C (v02 AMAZON AMZNMCFG 00000001 AMZN 00000001) ACPI: SLIT 0x000000007C260000 00002D (v01 AMAZON AMZNSLIT 00000001 AMZN 00000001) ACPI: IORT 0x000000007C250000 000078 (v01 AMAZON AMZNIORT 00000001 AMZN 00000001) ACPI: PPTT 0x000000007C240000 0000A0 (v01 AMAZON AMZNPPTT 00000001 AMZN 00000001) ACPI: 1 ACPI AML tables successfully acquired and loaded acpi0 at acpifdt0: Intel ACPICA 20180810 acpi0: X/RSDT: OemId64ビットARMでのUEFIやACPI、, AslId < ,01000013> acpi0: MCFG: segment 0, bus 0-255, address 0x0000000020000000 cpu0 at acpi0: Cortex-A72 r0p3 (Cortex V8-A core) cpu0: package 0, core 0, smt 0 cpu0: IC enabled, DC enabled, EL0/EL1 stack Alignment check enabled cpu0: Cache Writeback Granule 16B, Exclusives Reservation Granule 16B cpu0: Dcache line 64, Icache line 64 cpu0: L1 48KB/64B 3-way read-allocate PIPT Instruction cache cpu0: L1 32KB/64B 2-way write-back read-allocate write-allocate PIPT Data cache cpu0: L2 2048KB/64B 16-way write-back read-allocate write-allocate PIPT Unified cache cpu0: revID=0x0, PMCv3, 4k table, 64k table, 16bit ASID cpu0: auxID=0x11120, GICv3, FP, CRC32, SHA1, SHA256, AES+PMULL, NEON, rounding, NaN propagation, denormals, 32x64bitRegs, Fused Multiply-Add gicvthree0 at acpi0: GICv3 gicvthree0: ITS #0 at 0x10080000 gicvthree0: ITS TT0 type 0x1 size 0x80000 gicvthree0: ITS TT1 type 0x4 size 0x10000 gtmr0 at acpi0: irq 27 armgtmr0 at gtmr0: ARM Generic Timer (83333 kHz) timecounter: Timecounter "armgtmr0" frequency 83333333 Hz quality 500 qemufwcfg0 at acpi0 (FWCF, QEMU0002): mem 0x9020000-0x9020017 qemufwcfg0: <U> acpipchb0 at acpi0 (PCI0, PNP0A08-PCI0): PCI Express Host Bridge pci0 at acpipchb0 bus 0 pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok vendor 1d0f product 0200 (host bridge) at pci0 dev 0 function 0 not configured puc0 at pci0 dev 1 function 0: Amazon.com EC2 Serial (com) com0 at puc0 port 0 (16650-compatible): polling com0: ns16550a, working fifo com0: console nvme0 at pci0 dev 4 function 0: vendor 1d0f product 8061 (rev. 0x00) nvme0: NVMe 1.0 nvme0: for admin queue interrupting at irq 8192 (MSI-X vec 0) nvme0: Amazon Elastic Block Store, firmware 1.0, serial vol0b45b29e22629dbda nvme0: for io queue 1 interrupting at irq 8193 (MSI-X vec 1) affinity to cpu0 ld4 at nvme0 nsid 1 ld4: 30720 MB, 7801 cyl, 128 head, 63 sec, 512 bytes/sect x 62914560 sectors ena0 at pci0 dev 5 function 0: vendor 1d0f product ec20 (rev. 0x00) pci0: Elastic Network Adapter (ENA)ena vDRV_MODULE_VER_MAJOR.DRV_MODULE_VER_MINOR.DRV_MODULE_VER_SUBMINOR ena0: initalize 1 io queues ena0: for MGMNT interrupting at irq 8194 (MSI-X vec 0) RES0 (PNP0C02) at acpi0 not configured plgpio0 at acpi0 (GPO0, ARMH0061-0): mem 0x9030000-0x9030fff irq 39 gpio0 at plgpio0: 8 pins acpibut0 at acpi0 (PWRB, PNP0C0C-0): ACPI Power Button acpiged0 at acpi0 (GED1, ACPI0013-0): irq 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79 ena0: link is UP ena0: link state UP (was UNKNOWN) timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0 cpu_boot_secondary_processors: writing mbox with 0 cpu_boot_secondary_processors: secondary processors hatched IPsec: Initialized Security Association Processing. boot device: ld4 root on ld4a dumps on ld4b mountroot: trying ext2fs... mountroot: trying ffs... root file system type: ffs kern.module.path=/stand/evbarm/8.99.26/modules init: copying out path `/sbin/init' 11 ena0: device is going UP ena0: for IO queue 0 interrupting at irq 8195 (MSI-X vec 1) Kernel RNG "kernel" runs test FAILURE: too many runs of 1 0s (2686 >= 2685) cprng kernel: failed statistical RNG test Kernel RNG "kernel" runs test FAILURE: too many runs of 4 1s (393 >= 384) cprng kernel: failed statistical RNG test Kernel RNG "kernel" long run test FAILURE: Run of 26 1s found cprng kernel: failed statistical RNG test
ena(4)
など、最近の変更のおかげで
使えていることが良く分かります。
ena(4)
がどのように使えているのかも確認してみます。
$ ifconfig ena0: flags=0x884310Gbit Ethernetとして認識されていることが分かります。ですが、ネットワーク速度は実測 できていません。mtu 1500 capabilities=80200 enabled=0 ec_capabilities=4 ec_enabled=0 address: 0e:52:89:d3:32:4e media: Ethernet autoselect (10Gbase-T full-duplex) status: active inet6 fe80::af2d:2c6:5f60:bd02%ena0/64 flags 0x0 scopeid 0x1 inet 172.31.34.124/20 broadcast 172.31.47.255 flags 0x0 lo0: flags=0x8049 mtu 33624 inet6 ::1/128 flags 0x20 inet6 fe80::1%lo0/64 flags 0x0 scopeid 0x2 inet 127.0.0.1/8 flags 0x0
pkgsrc
をanoncvs.NetBSD.org
からcheckout
して、pkgsrc/multimedia/ffmpeg4
をビルドしてみましたが、
体感的には、Intel Core SoloなNetBSD/i386のマシンが思い出されました。
思ったより速いです。
明日は、Intel CPUなマシン上で動くNetBSD/amd64でIntel Quick Sync Videoの機能を 使って、ビデオの再生やエンコードを高速化したいと思います。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。