Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Keeping It Real (Time)

Keeping It Real (Time)

Ever get the feeling your cloud is just a bit too...cloudy? The flexibility and resource utilization that the cloud can offer might seem fantastic at first, but things look a little less rosy when you start thinking about the performance impacts the cloud can have on your applications, right?

Never fear: the OpenStack community hears you and and since Juno, projects like Nova have been on a steady march towards adding the features and capabilities that users with NFV and HPC workloads really need from their cloud. The latest of these Nova features builds upon earlier work to finally make real-time workloads in an OpenStack cloud a reality. In this talk, we take a peek under the Nova hood to see how this feature works and how it ties into earlier work in this area. We then demonstrate why this matters and how you can use this feature and others like it in your own applications.

Presented at OpenStack Summit Sydney

Stephen Finucane

November 06, 2017
Tweet

More Decks by Stephen Finucane

Other Decks in Technology

Transcript

  1. $ yum install -y kernel-rt.x86_64 kernel-rt-kvm.x86_64 $ yum install -y

    tuned-profiles-realtime tuned-profiles-nfv # configure tuned profile, hugepages, nova $ tuned-adm profile realtime-virtual-host $ cat /etc/default/grub | grep default_hugepagesz GRUB_CMDLINE_LINUX+="default_hugepagesz=1G" $ cat /etc/nova/nova-cpu.conf | grep vcpu_pin_set vcpu_pin_set = <isolated CPUs>
  2. $ yum install -y kernel-rt.x86_64 $ yum install -y tuned-profiles-realtime

    tuned-profiles-nfv # configure tuned profile $ tuned-adm profile realtime-virtual-guest # configure huge pages $ cat /etc/default/grub | grep default_hugepagesz GRUB_CMDLINE_LINUX+="default_hugepagesz=1G"
  3. $ openstack flavor create --vcpus 4 --ram 4096 --disk 20

    rt1.small $ openstack flavor set rt1.small \ --property 'hw:cpu_policy=dedicated' \ --property 'hw:cpu_realtime=yes' \ --property 'hw:cpu_realtime_mask=^0-1' \ --property 'hw:mem_page_size=1GB'
  4. $ openstack flavor create --vcpus 4 --ram 4096 --disk 20

    rt1.small $ openstack flavor set rt1.small \ --property 'hw:cpu_policy=dedicated' \ --property 'hw:cpu_realtime=yes' \ --property 'hw:cpu_realtime_mask=^0-1' \ --property 'hw:mem_page_size=1GB'
  5. $ openstack flavor create --vcpus 4 --ram 4096 --disk 20

    rt1.small $ openstack flavor set rt1.small \ --property 'hw:cpu_policy=dedicated' \ --property 'hw:cpu_realtime=yes' \ --property 'hw:cpu_realtime_mask=^0-1' \ --property 'hw:mem_page_size=1GB'
  6. $ openstack flavor create --vcpus 4 --ram 4096 --disk 20

    rt1.small $ openstack flavor set rt1.small \ --property 'hw:cpu_policy=dedicated' \ --property 'hw:cpu_realtime=yes' \ --property 'hw:cpu_realtime_mask=^0-1' \ --property 'hw:mem_page_size=1GB'
  7. $ openstack flavor create --vcpus 4 --ram 4096 --disk 20

    rt1.small $ openstack flavor set rt1.small \ --property 'hw:cpu_policy=dedicated' \ --property 'hw:cpu_realtime=yes' \ --property 'hw:cpu_realtime_mask=^0-1' \ --property 'hw:mem_page_size=1GB'
  8. $ openstack server create --flavor rt1.small --image centos-rt # ssh

    into guest $ taskset -c 2 stress --cpu 4 & $ sudo taskset -c 2 cyclictest -m -n -q -p95 -D 24h -h100 -i 200 \ > cyclictest.out $ cat cyclictest.out | tail -7 | head -3 # Min Latencies: 00006 # Avg Latencies: 00007 # Max Latencies: 00020