DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Burakov, Anatoly" <anatoly.burakov@intel.com>
To: David Hunt <david.hunt@intel.com>, dev@dpdk.org
Cc: lei.a.yao@intel.com
Subject: Re: [dpdk-dev] [PATCH v1 3/4] examples/power: allow vms to use lcores over 63
Date: Mon, 10 Dec 2018 13:06:11 +0000	[thread overview]
Message-ID: <472ceb5c-7c2c-854c-7ad4-16dd8702ffc1@intel.com> (raw)
In-Reply-To: <20181122170220.55482-4-david.hunt@intel.com>

On 22-Nov-18 5:02 PM, David Hunt wrote:
> Extending the functionality to allow vms to power manage cores beyond 63.
> 
> Signed-off-by: David Hunt <david.hunt@intel.com>
> ---
>   examples/vm_power_manager/channel_manager.c | 59 ++++++++-------------
>   examples/vm_power_manager/channel_manager.h | 30 ++---------
>   examples/vm_power_manager/channel_monitor.c | 56 +++++++------------
>   examples/vm_power_manager/vm_power_cli.c    |  4 +-
>   4 files changed, 48 insertions(+), 101 deletions(-)
> 
> diff --git a/examples/vm_power_manager/channel_manager.c b/examples/vm_power_manager/channel_manager.c
> index 5af4996db..3d493c179 100644
> --- a/examples/vm_power_manager/channel_manager.c
> +++ b/examples/vm_power_manager/channel_manager.c
> @@ -49,7 +49,7 @@ static bool global_hypervisor_available;
>    */
>   struct virtual_machine_info {
>   	char name[CHANNEL_MGR_MAX_NAME_LEN];
> -	rte_atomic64_t pcpu_mask[CHANNEL_CMDS_MAX_CPUS];
> +	uint16_t pcpu_map[CHANNEL_CMDS_MAX_CPUS];
>   	struct channel_info *channels[CHANNEL_CMDS_MAX_VM_CHANNELS];
>   	char channel_mask[POWER_MGR_MAX_CPUS];
>   	uint8_t num_channels;
> @@ -79,7 +79,7 @@ update_pcpus_mask(struct virtual_machine_info *vm_info)
>   	virVcpuInfoPtr cpuinfo;
>   	unsigned i, j;
>   	int n_vcpus;
> -	uint64_t mask;
> +	uint16_t pcpu;
>   
>   	memset(global_cpumaps, 0, CHANNEL_CMDS_MAX_CPUS*global_maplen);
>   
> @@ -120,26 +120,23 @@ update_pcpus_mask(struct virtual_machine_info *vm_info)
>   		vm_info->info.nrVirtCpu = n_vcpus;
>   	}
>   	for (i = 0; i < vm_info->info.nrVirtCpu; i++) {
> -		mask = 0;
> +		pcpu = 0;
>   		for (j = 0; j < global_n_host_cpus; j++) {
>   			if (VIR_CPU_USABLE(global_cpumaps, global_maplen, i, j) > 0) {
> -				mask |= 1ULL << j;
> +				pcpu = j;

Not sure what this does.

Initial code goes through all CPU's, marks all that are usable into mask 
(i.e. code implies there can be several), and then sets up this mask.

Now, you're going through all CPU's, store *one* arbitrary CPU index, 
and set the map up with that single index.

That doesn't look like an equivalent replacement.

>   			}
>   		}
> -		rte_atomic64_set(&vm_info->pcpu_mask[i], mask);
> +		vm_info->pcpu_map[i] = pcpu;
>   	}
>   	return 0;
>   }
>   
>   int
> -set_pcpus_mask(char *vm_name, unsigned int vcpu, char *core_mask)
> +set_pcpu(char *vm_name, unsigned int vcpu, unsigned int pcpu)

See patch 1 comments - it would've made this change easier to parse if 
set_pcpu was removed there, instead of here.

>   {
>   	unsigned i = 0;
>   	int flags = VIR_DOMAIN_AFFECT_LIVE|VIR_DOMAIN_AFFECT_CONFIG;
>   	struct virtual_machine_info *vm_info;
> -	char mask[POWER_MGR_MAX_CPUS];
> -
> -	memcpy(mask, core_mask, POWER_MGR_MAX_CPUS);
>   
>   	if (vcpu >= CHANNEL_CMDS_MAX_CPUS) {
>   		RTE_LOG(ERR, CHANNEL_MANAGER, "vCPU(%u) exceeds max allowable(%d)\n",
> @@ -166,17 +163,16 @@ set_pcpus_mask(char *vm_name, unsigned int vcpu, char *core_mask)
>   		return -1;
>   	}
>   	memset(global_cpumaps, 0 , CHANNEL_CMDS_MAX_CPUS * global_maplen);
> -	for (i = 0; i < POWER_MGR_MAX_CPUS; i++) {
> -		if (mask[i] == 1) {
> -			VIR_USE_CPU(global_cpumaps, i);
> -			if (i >= global_n_host_cpus) {
> -				RTE_LOG(ERR, CHANNEL_MANAGER, "CPU(%u) exceeds the available "
> -						"number of CPUs(%u)\n",
> -						i, global_n_host_cpus);
> -				return -1;
> -			}
> -		}
> +
> +	VIR_USE_CPU(global_cpumaps, i);
> +
> +	if (pcpu >= global_n_host_cpus) {
> +		RTE_LOG(ERR, CHANNEL_MANAGER, "CPU(%u) exceeds the available "
> +				"number of CPUs(%u)\n",
> +				i, global_n_host_cpus);
> +		return -1;
>   	}

Some comments on what the above code does would have been nice. Why the 
check was removed?

> +

-- 
Thanks,
Anatoly

  reply	other threads:[~2018-12-10 13:06 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-22 17:02 [dpdk-dev] examples/power: allow use of more than 64 cores David Hunt
2018-11-22 17:02 ` [dpdk-dev] [PATCH v1 1/4] examples/power: change 64-bit masks to arrays David Hunt
2018-12-10 12:18   ` Burakov, Anatoly
2018-12-13 12:03     ` Hunt, David
2018-12-14 11:49   ` [dpdk-dev] [PATCH v2 0/4] examples/power: allow use of more than 64 cores David Hunt
2018-12-14 11:49     ` [dpdk-dev] [PATCH v2 1/4] examples/power: change 64-bit masks to arrays David Hunt
2018-12-14 12:00       ` Burakov, Anatoly
2018-12-14 11:49     ` [dpdk-dev] [PATCH v2 2/4] examples/power: remove mask functions David Hunt
2018-12-14 12:01       ` Burakov, Anatoly
2018-12-14 11:49     ` [dpdk-dev] [PATCH v2 3/4] examples/power: allow vms to use lcores over 63 David Hunt
2018-12-14 12:08       ` Burakov, Anatoly
2018-12-14 12:29         ` Hunt, David
2018-12-14 11:49     ` [dpdk-dev] [PATCH v2 4/4] examples/power: increase max cores to 256 David Hunt
2018-12-14 13:31     ` [dpdk-dev] [PATCH v3 0/4] examples/power: allow use of more than 64 cores David Hunt
2018-12-14 13:31       ` [dpdk-dev] [PATCH v3 1/4] examples/power: change 64-bit masks to arrays David Hunt
2018-12-14 13:31       ` [dpdk-dev] [PATCH v3 2/4] examples/power: remove mask functions David Hunt
2018-12-14 13:31       ` [dpdk-dev] [PATCH v3 3/4] examples/power: allow vms to use lcores over 63 David Hunt
2018-12-14 13:31       ` [dpdk-dev] [PATCH v3 4/4] examples/power: increase max cores to 256 David Hunt
2018-12-14 13:37       ` [dpdk-dev] [PATCH v3 0/4] examples/power: allow use of more than 64 cores Burakov, Anatoly
2018-12-19 21:25         ` Thomas Monjalon
2018-11-22 17:02 ` [dpdk-dev] [PATCH v1 2/4] examples/power: remove mask functions David Hunt
2018-12-10 12:30   ` Burakov, Anatoly
2018-12-13 12:13     ` Hunt, David
2018-12-13 12:14       ` Burakov, Anatoly
2018-11-22 17:02 ` [dpdk-dev] [PATCH v1 3/4] examples/power: allow vms to use lcores over 63 David Hunt
2018-12-10 13:06   ` Burakov, Anatoly [this message]
2018-12-13 16:46     ` Hunt, David
2018-11-22 17:02 ` [dpdk-dev] [PATCH v1 4/4] examples/power: increase MAX_CPUS to 256 David Hunt
2018-12-10 12:31   ` Burakov, Anatoly

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=472ceb5c-7c2c-854c-7ad4-16dd8702ffc1@intel.com \
    --to=anatoly.burakov@intel.com \
    --cc=david.hunt@intel.com \
    --cc=dev@dpdk.org \
    --cc=lei.a.yao@intel.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).