Installing perf on Ubuntu 20.04 LTS in Oracle Cloud Infrastructure

This is a very short post with instructions on how to install perf on Ubunutu 20.04 LTS in Oracle Cloud Infrastructure (OCI). I created my VM using the Canonical-Ubuntu-20.04-Minimal-2021.06.14-0 image.

Updating the image first

The first thing I do with each image I spin up in the cloud is to update all the packages. By the way, you log into ubuntu using the ubuntu account (not opc):

$ ssh ubuntu@1.2.3.3
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.8.0-1034-oracle x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage


This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.

0 updates can be applied immediately.

Last login: Tue Jul 13 19:52:40 2021 from 1.2.3.2

The command to update all packages in Ubuntu is a one-liner:

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

In many cases a new kernel is installed as part of that exercise, mandating a reboot.

Installing perf

The current kernel at the time of writing was 5.8.0-1034-oracle. It’s nice to see that Oracle chose the HWE kernel (eg 5.8x.) over the GA kernel (5.4.x).

I used the following command to install perf on the VM:

$ sudo apt-get install linux-tools-$(uname -r) linux-tools-generic
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libdw1 libnuma1 libpci3 libslang2 libunwind8 linux-oracle-5.8-tools-5.8.0-1034
  linux-tools-5.4.0-77 linux-tools-5.4.0-77-generic linux-tools-common pci.ids
The following NEW packages will be installed:
  libdw1 libnuma1 libpci3 libslang2 libunwind8 linux-oracle-5.8-tools-5.8.0-1034
  linux-tools-5.4.0-77 linux-tools-5.4.0-77-generic linux-tools-5.8.0-1034-oracle
  linux-tools-common linux-tools-generic pci.ids
0 upgraded, 12 newly installed, 0 to remove and 0 not upgraded.
Need to get 12.9 MB of archives.
After this operation, 59.3 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://eu-frankfurt-1-ad-3.clouds.archive.ubuntu.com/ubuntu focal/main amd64 libslang2 amd64 2.3.2-4 [429 kB]
...

Once the installation is complete I can use perf as usual:

$ perf --version
perf version 5.8.18

Tracepoints!

A quick check of static tracepoints reveals plenty in 5.8.0-1034-oracle:

$ sudo perf list tracepoint | \
> awk -F: '{ a[$1]++ } END { for (i in a) print i, a[i]}' | \
> column
  syscalls 670			  sync_trace 1			  interconnect 2
  scsi 5			  rcu 1				  skb 3
  io_uring 14			  i2c 4				  nmi 1
  exceptions 2			  rseq 2			  msr 3
  qdisc 4			  mmc 2				  xen 27
  drm 3				  erofs 9			  jbd2 17
  mce 1				  tlb 1				  napi 1
  libata 6			  x86_fpu 11			  clk 16
  block 18			  pwm 2				  fib 1
  rpm 5				  power 22			  workqueue 4
  xdp 12			  page_pool 4			  tcp 7
  iocost 5			  timer 13			  cpuhp 3
  thermal 5			  initcall 3			  filelock 12
  rtc 12			  printk 1			  smbus 4
  cros_ec 2			  intel_iommu 7			  pagemap 2
  writeback 34			  alarmtimer 4			  compaction 14
  gpio 2			  hwmon 3			  sched 24
  iomap 8			  regmap 15			  mdio 1
  devlink 5			  btrfs 79			  bpf_test_run 1
  sunrpc 109			  udp 1				  irq_vectors 34
  neigh 7			  net 18			  vmscan 18
  irq 5				  regulator 11			  irq_matrix 12
  devfreq 1			  random 15			  page_isolation 1
  hyperv 5			  task 2			  ftrace 2
  percpu 5			  huge_memory 4			  wbt 4
  migrate 1			  raw_syscalls 2		  iscsi 7
  thermal_power_allocator 2	  mmap 1			  fs_dax 14
  ras 6				  iommu 7			  oom 8
  sock 3			  fib6 1			  signal 2
  vsyscall 1			  swiotlb 1			  kmem 13
  bridge 4			  cgroup 13			  filemap 4
  spi 7				  module 5			  resctrl 3
  xhci-hcd 53			  ext4 105			  dma_fence 7

I’ll do a few more tests later, but for now it seems I’m set and ready to go. Should you find problems I’m happy to update the post so please let me know!

Advertisement