From: Alan Carew <alan.carew@intel.com> To: dev@dpdk.org Subject: [dpdk-dev] [PATCH 04/10] CPU Frequency Power Management(Host). Date: Mon, 22 Sep 2014 19:34:33 +0100 Message-ID: <1411410879-28872-5-git-send-email-alan.carew@intel.com> (raw) In-Reply-To: <1411410879-28872-1-git-send-email-alan.carew@intel.com> A wrapper around librte_power, providing locking around the non-threadsafe library, allowing for frequency changes based on core masks and core numbers from both the CLI thread and epoll monitor thread. Signed-off-by: Alan Carew <alan.carew@intel.com> --- examples/vm_power_manager/Makefile | 57 +++++++++++++++++++ examples/vm_power_manager/main.c | 113 +++++++++++++++++++++++++++++++++++++ examples/vm_power_manager/main.h | 52 +++++++++++++++++ 3 files changed, 222 insertions(+) create mode 100644 examples/vm_power_manager/Makefile create mode 100644 examples/vm_power_manager/main.c create mode 100644 examples/vm_power_manager/main.h diff --git a/examples/vm_power_manager/Makefile b/examples/vm_power_manager/Makefile new file mode 100644 index 0000000..a2f00ea --- /dev/null +++ b/examples/vm_power_manager/Makefile @@ -0,0 +1,57 @@ +# BSD LICENSE +# +# Copyright(c) 2010-2014 Intel Corporation. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +ifeq ($(RTE_SDK),) +$(error "Please define RTE_SDK environment variable") +endif + +# Default target, can be overriden by command line or environment +RTE_TARGET ?= x86_64-default-linuxapp-gcc + +include $(RTE_SDK)/mk/rte.vars.mk + +# binary name +APP = vm_power_mgr + +# all source are stored in SRCS-y +SRCS-y := main.c vm_power_cli.c power_manager.c channel_manager.c +SRCS-y += channel_monitor.c + +CFLAGS += -O3 -lvirt -I$(RTE_SDK)/lib/librte_power_vm/ +CFLAGS += $(WERROR_FLAGS) + +# workaround for a gcc bug with noreturn attribute +# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12603 +ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y) +CFLAGS_main.o += -Wno-return-type +endif + +include $(RTE_SDK)/mk/rte.extapp.mk diff --git a/examples/vm_power_manager/main.c b/examples/vm_power_manager/main.c new file mode 100644 index 0000000..fdb9e73 --- /dev/null +++ b/examples/vm_power_manager/main.c @@ -0,0 +1,113 @@ +/*- + * BSD LICENSE + * + * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <stdio.h> +#include <string.h> +#include <stdint.h> +#include <errno.h> +#include <sys/epoll.h> +#include <fcntl.h> +#include <unistd.h> +#include <stdlib.h> +#include <unistd.h> +#include <signal.h> +#include <errno.h> + +#include <sys/queue.h> + +#include <rte_common.h> +#include <rte_eal.h> +#include <rte_launch.h> +#include <rte_log.h> +#include <rte_per_lcore.h> +#include <rte_lcore.h> +#include <rte_debug.h> +#include <rte_config.h> + +#include "channel_manager.h" +#include "channel_monitor.h" +#include "power_manager.h" +#include "vm_power_cli.h" +#include "main.h" + +static int +run_monitor(__attribute__((unused)) void *arg) +{ + if (channel_manager_init(DEFAULT_HV_PATH) < 0) { + printf("Unable to initialize channel manager\n"); + return -1; + } + if (channel_monitor_init() < 0) { + printf("Unable to initialize channel monitor\n"); + return -1; + } + run_channel_monitor(); + return 0; +} + +static void +sig_handler(int signo) +{ + printf("Received signal %d, exiting...\n", signo); + channel_monitor_exit(); + channel_manager_exit(); + power_manager_exit(); + +} + +int +MAIN(int argc, char **argv) +{ + int ret; + unsigned lcore_id; + + ret = rte_eal_init(argc, argv); + if (ret < 0) + rte_panic("Cannot init EAL\n"); + + signal(SIGINT, sig_handler); + signal(SIGTERM, sig_handler); + + lcore_id = rte_get_next_lcore(-1, 1, 0); + if (lcore_id == RTE_MAX_LCORE) { + RTE_LOG(ERR, EAL, "A minimum of two cores are required to run " + "application\n"); + return 0; + } + rte_eal_remote_launch(run_monitor, NULL, lcore_id); + + run_cli(NULL); + + rte_eal_mp_wait_lcore(); + return 0; +} diff --git a/examples/vm_power_manager/main.h b/examples/vm_power_manager/main.h new file mode 100644 index 0000000..7b4c3da --- /dev/null +++ b/examples/vm_power_manager/main.h @@ -0,0 +1,52 @@ +/*- + * BSD LICENSE + * + * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _MAIN_H_ +#define _MAIN_H_ + +#ifdef RTE_EXEC_ENV_BAREMETAL +#define MAIN _main +#else +#define MAIN main +#endif + +int MAIN(int argc, char **argv); + +#endif /* _MAIN_H_ */ + +#ifndef MAIN_H_ +#define MAIN_H_ + + + +#endif /* MAIN_H_ */ -- 1.9.3
next prev parent reply other threads:[~2014-09-22 18:29 UTC|newest] Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-09-22 18:34 [dpdk-dev] [PATCH 00/10] VM Power Management Alan Carew 2014-09-22 18:34 ` [dpdk-dev] [PATCH 01/10] Channel Manager and Monitor for VM Power Management(Host) Alan Carew 2014-09-22 18:34 ` [dpdk-dev] [PATCH 02/10] VM Power Management CLI(Host) Alan Carew 2014-09-22 18:34 ` [dpdk-dev] [PATCH 03/10] CPU Frequency Power Management(Host) Alan Carew 2014-09-22 18:34 ` Alan Carew [this message] 2014-09-22 18:34 ` [dpdk-dev] [PATCH 05/10] VM communication channels for VM Power Management(Guest) Alan Carew 2014-09-22 18:34 ` [dpdk-dev] [PATCH 06/10] Alternate implementation of librte_power " Alan Carew 2014-09-22 19:17 ` Neil Horman 2014-09-23 7:48 ` Carew, Alan 2014-09-22 18:34 ` [dpdk-dev] [PATCH 07/10] Packet format for VM Power Management(Host and Guest) Alan Carew 2014-09-22 18:34 ` [dpdk-dev] [PATCH 08/10] Build system integration for VM Power Management(Guest and Host) Alan Carew 2014-09-22 18:34 ` [dpdk-dev] [PATCH 09/10] VM Power Management Unit Tests(Guest) Alan Carew 2014-09-22 18:34 ` [dpdk-dev] [PATCH 10/10] VM Power Management CLI(Guest) Alan Carew 2014-09-24 17:26 ` [dpdk-dev] [PATCH v2 00/10] VM Power Management Alan Carew 2014-09-24 17:26 ` [dpdk-dev] [PATCH v2 01/10] Channel Manager and Monitor for VM Power Management(Host) Alan Carew 2014-09-24 17:26 ` [dpdk-dev] [PATCH v2 02/10] VM Power Management CLI(Host) Alan Carew 2014-09-24 17:26 ` [dpdk-dev] [PATCH v2 03/10] CPU Frequency Power Management(Host) Alan Carew 2014-09-24 17:26 ` [dpdk-dev] [PATCH v2 04/10] VM Power Management application and Makefile Alan Carew 2014-09-24 17:26 ` [dpdk-dev] [PATCH v2 05/10] VM Power Management CLI(Guest) Alan Carew 2014-09-24 17:26 ` [dpdk-dev] [PATCH v2 06/10] VM communication channels for VM Power Management(Guest) Alan Carew 2014-09-24 17:26 ` [dpdk-dev] [PATCH v2 07/10] librte_power common interface for Guest and Host Alan Carew 2014-09-25 10:10 ` Neil Horman 2014-09-25 17:06 ` Carew, Alan 2014-09-25 17:49 ` Neil Horman 2014-09-24 17:26 ` [dpdk-dev] [PATCH v2 08/10] Packet format for VM Power Management(Host and Guest) Alan Carew 2014-09-24 17:26 ` [dpdk-dev] [PATCH v2 09/10] Build system integration for VM Power Management(Guest and Host) Alan Carew 2014-09-24 17:26 ` [dpdk-dev] [PATCH v2 10/10] VM Power Management Unit Tests Alan Carew 2014-09-25 2:56 ` [dpdk-dev] [PATCH v2 00/10] VM Power Management Liu, Yong 2014-09-29 15:18 ` [dpdk-dev] [PATCH v3 " Alan Carew 2014-09-29 15:18 ` [dpdk-dev] [PATCH v3 01/10] Channel Manager and Monitor for VM Power Management(Host) Alan Carew 2014-09-29 15:18 ` [dpdk-dev] [PATCH v3 02/10] VM Power Management CLI(Host) Alan Carew 2014-09-29 15:18 ` [dpdk-dev] [PATCH v3 03/10] CPU Frequency Power Management(Host) Alan Carew 2014-09-29 15:18 ` [dpdk-dev] [PATCH v3 04/10] VM Power Management application and Makefile Alan Carew 2014-09-29 15:18 ` [dpdk-dev] [PATCH v3 05/10] VM Power Management CLI(Guest) Alan Carew 2014-09-29 15:18 ` [dpdk-dev] [PATCH v3 06/10] VM communication channels for VM Power Management(Guest) Alan Carew 2014-09-29 15:18 ` [dpdk-dev] [PATCH v3 07/10] librte_power common interface for Guest and Host Alan Carew 2014-09-29 15:18 ` [dpdk-dev] [PATCH v3 08/10] Packet format for VM Power Management(Host and Guest) Alan Carew 2014-09-29 15:18 ` [dpdk-dev] [PATCH v3 09/10] Build system integration for VM Power Management(Guest and Host) Alan Carew 2014-09-29 15:18 ` [dpdk-dev] [PATCH v3 10/10] VM Power Management Unit Tests Alan Carew 2014-09-29 17:29 ` [dpdk-dev] [PATCH v3 00/10] VM Power Management Neil Horman 2014-10-12 19:36 ` [dpdk-dev] [PATCH v4 " Alan Carew 2014-10-12 19:36 ` [dpdk-dev] [PATCH v4 01/10] Channel Manager and Monitor for VM Power Management(Host) Alan Carew 2014-10-12 19:36 ` [dpdk-dev] [PATCH v4 02/10] VM Power Management CLI(Host) Alan Carew 2014-10-12 19:36 ` [dpdk-dev] [PATCH v4 03/10] CPU Frequency Power Management(Host) Alan Carew 2014-10-12 19:36 ` [dpdk-dev] [PATCH v4 04/10] VM Power Management application and Makefile Alan Carew 2014-10-16 18:28 ` De Lara Guarch, Pablo 2014-10-12 19:36 ` [dpdk-dev] [PATCH v4 05/10] VM Power Management CLI(Guest) Alan Carew 2014-10-12 19:36 ` [dpdk-dev] [PATCH v4 06/10] VM communication channels for VM Power Management(Guest) Alan Carew 2014-10-12 19:36 ` [dpdk-dev] [PATCH v4 07/10] librte_power common interface for Guest and Host Alan Carew 2014-10-12 19:36 ` [dpdk-dev] [PATCH v4 08/10] Packet format for VM Power Management(Host and Guest) Alan Carew 2014-10-12 19:36 ` [dpdk-dev] [PATCH v4 09/10] Build system integration for VM Power Management(Guest and Host) Alan Carew 2014-10-12 19:36 ` [dpdk-dev] [PATCH v4 10/10] VM Power Management Unit Tests Alan Carew 2014-10-13 6:17 ` [dpdk-dev] [PATCH v4 00/10] VM Power Management Liu, Yong 2014-10-13 20:26 ` Thomas Monjalon 2014-10-14 12:37 ` Carew, Alan 2014-10-14 15:03 ` Thomas Monjalon 2014-10-16 15:21 ` Carew, Alan 2014-10-28 15:21 ` Thomas Monjalon 2014-11-10 9:05 ` Carew, Alan 2014-11-10 17:54 ` O'driscoll, Tim 2014-11-21 23:51 ` Zhu, Heqing 2014-11-22 17:17 ` Vincent JARDIN 2014-12-09 17:35 ` Paolo Bonzini 2014-12-11 23:18 ` Thomas Monjalon 2014-12-12 13:00 ` Carew, Alan 2014-12-12 14:50 ` Paolo Bonzini 2014-12-12 16:10 ` Thomas Monjalon 2014-12-12 16:13 ` Paolo Bonzini 2014-11-21 17:42 ` [dpdk-dev] [PATCH v5 00/10] Virtual Machine " Pablo de Lara 2014-11-21 17:42 ` [dpdk-dev] [PATCH v5 01/10] Channel Manager and Monitor for VM Power Management(Host) Pablo de Lara 2014-11-21 17:42 ` [dpdk-dev] [PATCH v5 02/10] VM Power Management CLI(Host) Pablo de Lara 2014-11-21 17:42 ` [dpdk-dev] [PATCH v5 03/10] CPU Frequency Power Management(Host) Pablo de Lara 2014-11-21 17:42 ` [dpdk-dev] [PATCH v5 04/10] VM Power Management application and Makefile Pablo de Lara 2014-11-21 17:42 ` [dpdk-dev] [PATCH v5 05/10] VM Power Management CLI(Guest) Pablo de Lara 2014-11-21 17:42 ` [dpdk-dev] [PATCH v5 06/10] VM communication channels for VM Power Management(Guest) Pablo de Lara 2014-11-21 17:42 ` [dpdk-dev] [PATCH v5 07/10] librte_power common interface for Guest and Host Pablo de Lara 2014-11-21 17:42 ` [dpdk-dev] [PATCH v5 08/10] Packet format for VM Power Management(Host and Guest) Pablo de Lara 2014-11-21 17:42 ` [dpdk-dev] [PATCH v5 09/10] Build system integration for VM Power Management(Guest and Host) Pablo de Lara 2014-11-21 17:42 ` [dpdk-dev] [PATCH v5 10/10] VM Power Management Unit Tests Pablo de Lara 2014-11-25 16:18 ` [dpdk-dev] [PATCH v6 00/10] Virtual Machine Power Management Pablo de Lara 2014-11-25 16:18 ` [dpdk-dev] [PATCH v6 01/10] Channel Manager and Monitor for VM Power Management(Host) Pablo de Lara 2014-11-29 15:21 ` Neil Horman 2014-11-25 16:18 ` [dpdk-dev] [PATCH v6 02/10] VM Power Management CLI(Host) Pablo de Lara 2014-11-25 16:18 ` [dpdk-dev] [PATCH v6 03/10] CPU Frequency Power Management(Host) Pablo de Lara 2014-11-25 16:18 ` [dpdk-dev] [PATCH v6 04/10] VM Power Management application and Makefile Pablo de Lara 2014-11-25 16:18 ` [dpdk-dev] [PATCH v6 05/10] VM Power Management CLI(Guest) Pablo de Lara 2014-11-25 16:18 ` [dpdk-dev] [PATCH v6 06/10] VM communication channels for VM Power Management(Guest) Pablo de Lara 2014-11-25 16:18 ` [dpdk-dev] [PATCH v6 07/10] librte_power common interface for Guest and Host Pablo de Lara 2014-11-25 16:18 ` [dpdk-dev] [PATCH v6 08/10] Packet format for VM Power Management(Host and Guest) Pablo de Lara 2014-11-25 16:18 ` [dpdk-dev] [PATCH v6 09/10] Build system integration for VM Power Management(Guest and Host) Pablo de Lara 2014-11-25 16:18 ` [dpdk-dev] [PATCH v6 10/10] VM Power Management Unit Tests Pablo de Lara 2014-11-26 16:41 ` [dpdk-dev] [PATCH v6 00/10] Virtual Machine Power Management Thomas Monjalon 2014-11-10 9:19 ` [dpdk-dev] [PATCH v2] librte_cmdline: FreeBSD Fix oveflow when size of command result structure is greater than BUFSIZ Alan Carew 2014-12-05 14:16 ` Olivier MATZ 2014-12-05 14:19 ` [dpdk-dev] [PATCH v3] " Olivier Matz 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=1411410879-28872-5-git-send-email-alan.carew@intel.com \ --to=alan.carew@intel.com \ --cc=dev@dpdk.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
DPDK patches and discussions This inbox may be cloned and mirrored by anyone: git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \ dev@dpdk.org public-inbox-index dev Example config snippet for mirrors. Newsgroup available over NNTP: nntp://inbox.dpdk.org/inbox.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git