All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Monjalon <thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
To: Pablo de Lara
	<pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Alan Carew <alan.carew-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: dev-VfR2kkLFssw@public.gmane.org
Subject: Re: [PATCH v6 00/10] Virtual Machine Power Management
Date: Wed, 26 Nov 2014 17:41:17 +0100	[thread overview]
Message-ID: <2418003.sRduq89chk@xps13> (raw)
In-Reply-To: <1416932291-13162-1-git-send-email-pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>

Hi Pablo and Alan,

2014-11-25 16:18, Pablo de Lara:
> Virtual Machine Power Management.
> 
> The following patches add two DPDK sample applications and an alternate
> implementation of librte_power for use in virtualized environments.
> The idea is to provide librte_power functionality from within a VM to address
> the lack of MSRs to facilitate frequency changes from within a VM.
> It is ideally suited for Haswell which provides per core frequency scaling.
> 
> The current librte_power affects frequency changes via the acpi-cpufreq
> 'userspace' power governor, accessed via sysfs.
> 
> General Overview:(more information in each patch that follows).
> The VM Power Management solution provides two components:
> 
>  1)VM: Allows for the a DPDK application in a VM to reuse the librte_power
>  interface. Each lcore opens a Virto-Serial endpoint channel to the host,
>  where the re-implementation of librte_power simply forwards the requests for
>  frequency change to a host based monitor. The host monitor itself uses
>  librte_power.
>  Each lcore channel corresponds to a
>  serial device '/dev/virtio-ports/virtio.serial.port.poweragent.<lcore_num>'
>  which is opened in non-blocking mode.
>  While each Virtual CPU can be mapped to multiple physical CPUs it is
>  recommended that each vCPU should be mapped to a single core only.
> 
>  2)Host: The host monitor is managed by a CLI, it allows for adding qemu/KVM
>  virtual machines and associated channels to the monitor, manually changing
>  CPU frequency, inspecting the state of VMs, vCPU to pCPU pinning and managing
>  channels.
>  Host channel endpoints are Virto-Serial endpoints configured as AF_UNIX file
>  sockets which follow a specific naming convention
>  i.e /tmp/powermonitor/<vm_name>.<channel_number>,
>  each channel has an 1:1 mapping to a VM endpoint
>  i.e. /dev/virtio-ports/virtio.serial.port.poweragent.<lcore_num>
>  Host channel endpoints are opened in non-blocking mode and are monitored via epoll.
>  Requests over each channel to change frequency are forwarded to the original
>  librte_power.
>  
> Channels must be manually configured as qemu-kvm command line arguments or
> libvirt domain definition(xml) e.g.
> <controller type='virtio-serial' index='0'>
>  <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
> </controller>
> <channel type='unix'>
>   <source mode='bind' path='/tmp/powermonitor/<vm_name>.<channel_num>'/>
>   <target type='virtio' name='virtio.serial.port.poweragent.<channel_num>/>
>   <address type='virtio-serial' controller='0' bus='0' port='<N>'/>
> </channel>
> 
> Where multiple channels can be configured by specifying multiple <channel>
> elements, by replacing <vm_name>, <channel_num>.
> <N>(port number) should be incremented by 1 for each new channel element.
> More information on Virtio-Serial can be found here:
> http://fedoraproject.org/wiki/Features/VirtioSerial
> To enable the Hypervisor creation of channels, the host endpoint directory
> must be created with qemu permissions:
> mkdir /tmp/powermonitor
> chown qemu:qemu /tmp/powermonitor
> 
> The host application runs on two separate lcores:
> Core N) CLI: For management of Virtual Machines adding channels to Monitor thread,
>  inspecting state and manually setting CPU frequency [PATCH 02/09]
> Core N+1) Monitor Thread: An epoll based infinite loop that waits on channel events
>  from VMs and calls the corresponding librte_power functions.
> 
> A sample application is also provided to run on Virtual Machines, this
> application provides a CLI to manually set the frequency of a 
> vCPU[PATCH 08/09]
> 
> The current l3fwd-power sample application can also be run on a VM.
> 
> Changes in V6:
>  Fixed typos and missing some identations and blank lines
> 
> Changes in V5:
>  Fixed default target in sample app Makefiles
> 
> Changes in V4:
>  Fixed double free of channel during VM shutdown.
> 
> Changes in V3:
>  Fixed crash in Guest CLI when host application is not running.
>  Renamed #defines to be more specific to the module they belong
>  Added vCPU pinning via CLI
> 
> Changes in V2:
>  Runtime selection of librte_power implementations.
>  Updated Unit tests to cover librte_power changes.
>  PATCH[0/3] was sent twice, again as PATCH[0/4]
>  Miscellaneous fixes.
> 
> Alan Carew (10):
>   Channel Manager and Monitor for VM Power Management(Host).
>   VM Power Management CLI(Host).
>   CPU Frequency Power Management(Host).
>   VM Power Management application and Makefile.
>   VM Power Management CLI(Guest).
>   VM communication channels for VM Power Management(Guest).
>   librte_power common interface for Guest and Host
>   Packet format for VM Power Management(Host and Guest).
>   Build system integration for VM Power Management(Guest and Host)
>   VM Power Management Unit Tests

Thanks to my shiny updated checkpatch, I was able to fix these 2 typos:

WARNING:MISSING_SPACE: break quoted strings at a space character
#831: FILE: examples/vm_power_manager/channel_manager.c:722:
+               RTE_LOG(ERR, CHANNEL_MANAGER, "Error connecting to %s, connection"
+                               "already established\n", path);

WARNING:MISSING_SPACE: break quoted strings at a space character
#1424: FILE: examples/vm_power_manager/channel_monitor.c:181:
+               RTE_LOG(ERR, CHANNEL_MONITOR, "Unable to rte_malloc for"
+                               "epoll events\n");

This codebase is really too big to be properly reviewed.

As discussed earlier, it's a workaround for a missing feature in Qemu/KVM.
It's now applied in DPDK but it would be really more convenient for everyone if
it could be fixed upstream. I hope you'll be able to sustain this work for the
goodness of every implied communities.

Thank you
-- 
Thomas

  parent reply	other threads:[~2014-11-26 16:41 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-22 18:34 [PATCH 00/10] VM Power Management Alan Carew
     [not found] ` <1411410879-28872-1-git-send-email-alan.carew-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-09-22 18:34   ` [PATCH 01/10] Channel Manager and Monitor for VM Power Management(Host) Alan Carew
2014-09-22 18:34   ` [PATCH 02/10] VM Power Management CLI(Host) Alan Carew
2014-09-22 18:34   ` [PATCH 03/10] CPU Frequency Power Management(Host) Alan Carew
2014-09-22 18:34   ` [PATCH 04/10] " Alan Carew
2014-09-22 18:34   ` [PATCH 05/10] VM communication channels for VM Power Management(Guest) Alan Carew
2014-09-22 18:34   ` [PATCH 06/10] Alternate implementation of librte_power " Alan Carew
     [not found]     ` <1411410879-28872-7-git-send-email-alan.carew-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-09-22 19:17       ` Neil Horman
     [not found]         ` <20140922191753.GH25406-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-09-23  7:48           ` Carew, Alan
2014-09-22 18:34   ` [PATCH 07/10] Packet format for VM Power Management(Host and Guest) Alan Carew
2014-09-22 18:34   ` [PATCH 08/10] Build system integration for VM Power Management(Guest and Host) Alan Carew
2014-09-22 18:34   ` [PATCH 09/10] VM Power Management Unit Tests(Guest) Alan Carew
2014-09-22 18:34   ` [PATCH 10/10] VM Power Management CLI(Guest) Alan Carew
2014-09-24 17:26   ` [PATCH v2 00/10] VM Power Management Alan Carew
     [not found]     ` <1411579576-21786-1-git-send-email-alan.carew-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-09-24 17:26       ` [PATCH v2 01/10] Channel Manager and Monitor for VM Power Management(Host) Alan Carew
2014-09-24 17:26       ` [PATCH v2 02/10] VM Power Management CLI(Host) Alan Carew
2014-09-24 17:26       ` [PATCH v2 03/10] CPU Frequency Power Management(Host) Alan Carew
2014-09-24 17:26       ` [PATCH v2 04/10] VM Power Management application and Makefile Alan Carew
2014-09-24 17:26       ` [PATCH v2 05/10] VM Power Management CLI(Guest) Alan Carew
2014-09-24 17:26       ` [PATCH v2 06/10] VM communication channels for VM Power Management(Guest) Alan Carew
2014-09-24 17:26       ` [PATCH v2 07/10] librte_power common interface for Guest and Host Alan Carew
     [not found]         ` <1411579576-21786-8-git-send-email-alan.carew-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-09-25 10:10           ` Neil Horman
     [not found]             ` <20140925101003.GA32725-B26myB8xz7F8NnZeBjwnZQMhkBWG/bsMQH7oEaQurus@public.gmane.org>
2014-09-25 17:06               ` Carew, Alan
     [not found]                 ` <0E29434AEE0C3A4180987AB476A6F6306D278070-kPTMFJFq+rHjxeytcECX8bfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-09-25 17:49                   ` Neil Horman
2014-09-24 17:26       ` [PATCH v2 08/10] Packet format for VM Power Management(Host and Guest) Alan Carew
2014-09-24 17:26       ` [PATCH v2 09/10] Build system integration for VM Power Management(Guest and Host) Alan Carew
2014-09-24 17:26       ` [PATCH v2 10/10] VM Power Management Unit Tests Alan Carew
2014-09-25  2:56       ` [PATCH v2 00/10] VM Power Management Liu, Yong
2014-09-29 15:18       ` [PATCH v3 " Alan Carew
     [not found]         ` <1412003903-9061-1-git-send-email-alan.carew-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-09-29 15:18           ` [PATCH v3 01/10] Channel Manager and Monitor for VM Power Management(Host) Alan Carew
2014-09-29 15:18           ` [PATCH v3 02/10] VM Power Management CLI(Host) Alan Carew
2014-09-29 15:18           ` [PATCH v3 03/10] CPU Frequency Power Management(Host) Alan Carew
2014-09-29 15:18           ` [PATCH v3 04/10] VM Power Management application and Makefile Alan Carew
2014-09-29 15:18           ` [PATCH v3 05/10] VM Power Management CLI(Guest) Alan Carew
2014-09-29 15:18           ` [PATCH v3 06/10] VM communication channels for VM Power Management(Guest) Alan Carew
2014-09-29 15:18           ` [PATCH v3 07/10] librte_power common interface for Guest and Host Alan Carew
2014-09-29 15:18           ` [PATCH v3 08/10] Packet format for VM Power Management(Host and Guest) Alan Carew
2014-09-29 15:18           ` [PATCH v3 09/10] Build system integration for VM Power Management(Guest and Host) Alan Carew
2014-09-29 15:18           ` [PATCH v3 10/10] VM Power Management Unit Tests Alan Carew
2014-09-29 17:29           ` [PATCH v3 00/10] VM Power Management Neil Horman
2014-10-12 19:36           ` [PATCH v4 " Alan Carew
     [not found]             ` <1413142571-23069-1-git-send-email-alan.carew-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-10-12 19:36               ` [PATCH v4 01/10] Channel Manager and Monitor for VM Power Management(Host) Alan Carew
2014-10-12 19:36               ` [PATCH v4 02/10] VM Power Management CLI(Host) Alan Carew
2014-10-12 19:36               ` [PATCH v4 03/10] CPU Frequency Power Management(Host) Alan Carew
2014-10-12 19:36               ` [PATCH v4 04/10] VM Power Management application and Makefile Alan Carew
     [not found]                 ` <1413142571-23069-5-git-send-email-alan.carew-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-10-16 18:28                   ` De Lara Guarch, Pablo
2014-10-12 19:36               ` [PATCH v4 05/10] VM Power Management CLI(Guest) Alan Carew
2014-10-12 19:36               ` [PATCH v4 06/10] VM communication channels for VM Power Management(Guest) Alan Carew
2014-10-12 19:36               ` [PATCH v4 07/10] librte_power common interface for Guest and Host Alan Carew
2014-10-12 19:36               ` [PATCH v4 08/10] Packet format for VM Power Management(Host and Guest) Alan Carew
2014-10-12 19:36               ` [PATCH v4 09/10] Build system integration for VM Power Management(Guest and Host) Alan Carew
2014-10-12 19:36               ` [PATCH v4 10/10] VM Power Management Unit Tests Alan Carew
2014-10-13  6:17               ` [PATCH v4 00/10] VM Power Management Liu, Yong
2014-10-13 20:26               ` Thomas Monjalon
2014-10-14 12:37                 ` Carew, Alan
     [not found]                   ` <0E29434AEE0C3A4180987AB476A6F6306D28093B-kPTMFJFq+rHjxeytcECX8bfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-10-14 15:03                     ` Thomas Monjalon
2014-10-16 15:21                       ` Carew, Alan
     [not found]                         ` <0E29434AEE0C3A4180987AB476A6F6306D2811AD-kPTMFJFq+rHjxeytcECX8bfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-10-28 15:21                           ` Thomas Monjalon
2014-11-10  9:05                             ` Carew, Alan
     [not found]                               ` <0E29434AEE0C3A4180987AB476A6F6306D28E7DF-kPTMFJFq+rHjxeytcECX8bfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-11-10 17:54                                 ` O'driscoll, Tim
     [not found]                                   ` <26FA93C7ED1EAA44AB77D62FBE1D27BA54C4BD63-kPTMFJFq+rFP9JyJpTNKArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-11-21 23:51                                     ` Zhu, Heqing
2014-11-22 17:17                                     ` Vincent JARDIN
2014-11-22 17:17                                       ` [Qemu-devel] [dpdk-dev] " Vincent JARDIN
     [not found]                                       ` <5470C514.3080307-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-12-09 17:35                                         ` Paolo Bonzini
2014-12-09 17:35                                           ` [Qemu-devel] " Paolo Bonzini
     [not found]                                           ` <548732C9.2020201-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-11 23:18                                             ` Thomas Monjalon
2014-12-11 23:18                                               ` [Qemu-devel] [dpdk-dev] " Thomas Monjalon
2014-12-12 13:00                                               ` Carew, Alan
2014-12-12 13:00                                                 ` [Qemu-devel] [dpdk-dev] " Carew, Alan
2014-12-12 14:50                                                 ` Paolo Bonzini
2014-12-12 14:50                                                   ` [Qemu-devel] " Paolo Bonzini
     [not found]                                                   ` <548B00B3.8040201-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-12 16:10                                                     ` Thomas Monjalon
2014-12-12 16:10                                                       ` [Qemu-devel] [dpdk-dev] " Thomas Monjalon
2014-12-12 16:13                                                       ` Paolo Bonzini
2014-12-12 16:13                                                         ` [Qemu-devel] " Paolo Bonzini
2014-11-21 17:42               ` [PATCH v5 00/10] Virtual Machine " Pablo de Lara
     [not found]                 ` <1416591732-3735-1-git-send-email-pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-11-21 17:42                   ` [PATCH v5 01/10] Channel Manager and Monitor for VM Power Management(Host) Pablo de Lara
2014-11-21 17:42                   ` [PATCH v5 02/10] VM Power Management CLI(Host) Pablo de Lara
2014-11-21 17:42                   ` [PATCH v5 03/10] CPU Frequency Power Management(Host) Pablo de Lara
2014-11-21 17:42                   ` [PATCH v5 04/10] VM Power Management application and Makefile Pablo de Lara
2014-11-21 17:42                   ` [PATCH v5 05/10] VM Power Management CLI(Guest) Pablo de Lara
2014-11-21 17:42                   ` [PATCH v5 06/10] VM communication channels for VM Power Management(Guest) Pablo de Lara
2014-11-21 17:42                   ` [PATCH v5 07/10] librte_power common interface for Guest and Host Pablo de Lara
2014-11-21 17:42                   ` [PATCH v5 08/10] Packet format for VM Power Management(Host and Guest) Pablo de Lara
2014-11-21 17:42                   ` [PATCH v5 09/10] Build system integration for VM Power Management(Guest and Host) Pablo de Lara
2014-11-21 17:42                   ` [PATCH v5 10/10] VM Power Management Unit Tests Pablo de Lara
2014-11-25 16:18                   ` [PATCH v6 00/10] Virtual Machine Power Management Pablo de Lara
     [not found]                     ` <1416932291-13162-1-git-send-email-pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-11-25 16:18                       ` [PATCH v6 01/10] Channel Manager and Monitor for VM Power Management(Host) Pablo de Lara
     [not found]                         ` <1416932291-13162-2-git-send-email-pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-11-29 15:21                           ` Neil Horman
2014-11-25 16:18                       ` [PATCH v6 02/10] VM Power Management CLI(Host) Pablo de Lara
2014-11-25 16:18                       ` [PATCH v6 03/10] CPU Frequency Power Management(Host) Pablo de Lara
2014-11-25 16:18                       ` [PATCH v6 04/10] VM Power Management application and Makefile Pablo de Lara
2014-11-25 16:18                       ` [PATCH v6 05/10] VM Power Management CLI(Guest) Pablo de Lara
2014-11-25 16:18                       ` [PATCH v6 06/10] VM communication channels for VM Power Management(Guest) Pablo de Lara
2014-11-25 16:18                       ` [PATCH v6 07/10] librte_power common interface for Guest and Host Pablo de Lara
2014-11-25 16:18                       ` [PATCH v6 08/10] Packet format for VM Power Management(Host and Guest) Pablo de Lara
2014-11-25 16:18                       ` [PATCH v6 09/10] Build system integration for VM Power Management(Guest and Host) Pablo de Lara
2014-11-25 16:18                       ` [PATCH v6 10/10] VM Power Management Unit Tests Pablo de Lara
2014-11-26 16:41                       ` Thomas Monjalon [this message]
2014-11-10  9:19           ` [PATCH v2] librte_cmdline: FreeBSD Fix oveflow when size of command result structure is greater than BUFSIZ Alan Carew
     [not found]             ` <1415611146-32368-1-git-send-email-alan.carew-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-12-05 14:16               ` Olivier MATZ
     [not found]                 ` <5481BE26.9080903-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-12-05 14:19                   ` [PATCH v3] " Olivier Matz
     [not found]                     ` <1417789147-5636-1-git-send-email-olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-12-05 15:51                       ` Bruce Richardson
2014-12-05 15:58                         ` Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2418003.sRduq89chk@xps13 \
    --to=thomas.monjalon-pdr9zngts4eavxtiumwx3w@public.gmane.org \
    --cc=alan.carew-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=dev-VfR2kkLFssw@public.gmane.org \
    --cc=pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.