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. OPENSTACK® AGILITY. RED HAT® RELIABILITY.

    View full-size slide





  2. View full-size slide





  3. View full-size slide

  4. $ 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 =

    View full-size slide

  5. $ 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"

    View full-size slide

  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'

    View full-size slide

  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'

    View full-size slide

  8. $ 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'

    View full-size slide

  9. $ 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'

    View full-size slide

  10. $ 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'

    View full-size slide

  11. $ openstack server create --flavor rt1.small --image centos-rt

    View full-size slide

  12. $ 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

    View full-size slide