DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Hunt, David" <david.hunt@intel.com>
To: "Burakov, Anatoly" <anatoly.burakov@intel.com>, dev@dpdk.org
Cc: john.mcnamara@intel.com, stephen@networkplumber.org,
	lei.a.yao@intel.com,  bruce.richardson@intel.com
Subject: Re: [dpdk-dev] [PATCH v3 5/8] examples/power: add json string handling
Date: Tue, 25 Sep 2018 15:00:22 +0100	[thread overview]
Message-ID: <046d9290-55f9-8433-cbbd-b975f353fa47@intel.com> (raw)
In-Reply-To: <47b4dbc6-48ca-f41c-86cb-e6f5b168ebf9@intel.com>

Hi Anatoly,


On 25/9/2018 12:27 PM, Burakov, Anatoly wrote:
> On 14-Sep-18 2:54 PM, David Hunt wrote:
>> Add JSON string handling to vm_power_manager for JSON strings received
>> through the fifo. The format of the JSON strings are detailed in the
>> next patch, the vm_power_manager user guide documentation updates.
>>
>> This patch introduces a new dependency on Jansson, a C library for
>> encoding, decoding and manipulating JSON data. To compile the sample app
>> you now need to have installed libjansson4 and libjansson-dev (these may
>> be named slightly differently depending on your Operating System)
>>
>> Signed-off-by: David Hunt <david.hunt@intel.com>
>> ---
>
> <snip>
>
>>   void channel_monitor_exit(void)
>>   {
>>       run_loop = 0;
>> @@ -124,18 +259,11 @@ get_pcpu_to_control(struct policy *pol)
>>         ci = get_core_info();
>>   -    RTE_LOG(INFO, CHANNEL_MONITOR,
>> -            "Looking for pcpu for %s\n", pol->pkt.vm_name);
>> -
>>       /*
>>        * So now that we're handling virtual and physical cores, we 
>> need to
>>        * differenciate between them when adding them to the branch 
>> monitor.
>>        * Virtual cores need to be converted to physical cores.
>>        */
>> -
>> -
>> -
>> -
>
> Now you're removing those newlines you added in previous commit :)
>

Fixed in previous patch in the next version.


>>       if (pol->pkt.core_type == CORE_TYPE_VIRTUAL) {
>>           /*
>>            * If the cores in the policy are virtual, we need to map them
>> @@ -295,8 +423,6 @@ apply_traffic_profile(struct policy *pol)
>>         diff = get_pkt_diff(pol);
>>   -    RTE_LOG(INFO, CHANNEL_MONITOR, "Applying traffic profile\n");
>> -
>
> Here and in a few other places: these log message removals look to be 
> unrelated to this commit. Also, in my experience, more logging is 
> better than less logging, especially when something goes wrong - maybe 
> instead of removing them, just switch the level to debug?
>

Changed to Debug instead. Was causing quite a verbose output.

>>       if (diff >= (pol->pkt.traffic_policy.max_max_packet_thresh)) {
>>           for (count = 0; count < pol->pkt.num_vcpu; count++) {
>>               if (pol->core_share[count].status != 1)
>> @@ -340,9 +466,6 @@ apply_time_profile(struct policy *pol)
>>                   if (pol->core_share[count].status != 1) {
>>                       power_manager_scale_core_max(
>>                           pol->core_share[count].pcpu);
>> -                RTE_LOG(INFO, CHANNEL_MONITOR,
>
> <snip>
>
>> +        int idx = 0;
>> +        int indent = 0;
>> +        do {
>> +            n_bytes = read(chan_info->fd, &json_data[idx], 1);
>> +            if (n_bytes == 0)
>> +                break;
>> +            if (json_data[idx] == '{')
>> +                indent++;
>> +            if (json_data[idx] == '}')
>> +                indent--;
>
> What happens if someone sends a string with a "{" or "}" inside?
>

If we get to the end of the buffer without a "}", it calls the library 
to convert, will fail, and move on.  No damage done (I hope).
Also, a short un-terminated (by "}") string will also exit when no 
characters read.
So any invalid JSON string that's send to Jansson will fail to parse, 
and the application will be ready for the next (hopefully valid) JSON 
string.

>> +            if ((indent > 0) || (idx >> 0))
>
> idx > 0?
>

Yes, will fix.

>> +                idx++;
>> +            if (indent == 0)
>> +                json_data[idx] = 0;
>> +            if (idx >= MAX_JSON_STRING_LEN)
>> +                break;
>
> This looks like a potential overflow to me, because you increment idx, 
> check if it's >= max, but still write into that location if indent == 
> 0 on previous line.
>

Yes, will exit at MAX_JSON_STRING_LEN-1

>> +        } while (indent > 0);
>> +
>> +        if (indent > 0)
>> +            /*
>> +             * We've broken out of the read loop without getting
>> +             * a closing brace, so throw away the datai
>
> I think "data" is plural already, no need to invent a new word :)
>
>> +             */
>> +            json_data[idx] = 0;
>
> idx could potentially be overflown already due to code above?
>

Typo fixed in next version.

>> +
>> +        if (strlen(json_data) == 0)
>> +            continue;
>> +
>> +        printf("got [%s]\n", json_data);
>> +
>
> <snip>
>
>>   void
>>   run_channel_monitor(void)
>>   {
>> @@ -570,11 +785,16 @@ run_channel_monitor(void)
>>           if (!run_loop)
>>               break;
>>           for (i = 0; i < n_events; i++) {
>> +            if (!global_events_list[i].data.ptr) {
>> +                fflush(stdout);
>> +                continue;
>> +            }
>
> This change looks unrelated to this commit.

There was a few printfs in there, this change will be removed altogether 
in next version.

>
>>               struct channel_info *chan_info = (struct channel_info *)
>>                       global_events_list[i].data.ptr;
>>               if ((global_events_list[i].events & EPOLLERR) ||
>

Thanks,
Dave.

  reply	other threads:[~2018-09-25 14:02 UTC|newest]

Thread overview: 110+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-30 10:54 [dpdk-dev] [PATCH v1 0/7] add json power policy interface for containers David Hunt
2018-08-30 10:54 ` [dpdk-dev] [PATCH v1 1/7] examples/power: add checks around hypervisor David Hunt
2018-08-30 16:59   ` Stephen Hemminger
2018-09-12 10:53     ` Hunt, David
2018-08-30 10:54 ` [dpdk-dev] [PATCH v1 2/7] lib/power: add changes for host commands/policies David Hunt
2018-08-30 16:59   ` Stephen Hemminger
2018-09-12 10:51     ` Hunt, David
2018-08-30 10:54 ` [dpdk-dev] [PATCH v1 3/7] examples/power: add necessary changes to guest app David Hunt
2018-08-30 10:54 ` [dpdk-dev] [PATCH v1 4/7] examples/power: add host channel to power manager David Hunt
2018-09-04  7:31   ` Yao, Lei A
2018-09-12 12:07     ` Hunt, David
2018-08-30 10:54 ` [dpdk-dev] [PATCH v1 5/7] examples/power: add json string handling David Hunt
2018-08-30 17:00   ` Stephen Hemminger
2018-08-31 13:55     ` Hunt, David
2018-09-12 10:54     ` Hunt, David
2018-08-30 10:54 ` [dpdk-dev] [PATCH v1 6/7] doc/vm_power_manager: add JSON interface API info David Hunt
2018-09-04  5:17   ` Yao, Lei A
2018-09-12 11:31     ` Hunt, David
2018-08-30 10:54 ` [dpdk-dev] [PATCH v1 7/7] examples/power: add json example files David Hunt
2018-09-12 14:49 ` [dpdk-dev] [PATCH v2 0/7] add json power policy interface for containers David Hunt
2018-09-12 14:49   ` [dpdk-dev] [PATCH v2 1/7] examples/power: add checks around hypervisor David Hunt
2018-09-12 14:49   ` [dpdk-dev] [PATCH v2 2/7] lib/power: add changes for host commands/policies David Hunt
2018-09-12 14:49   ` [dpdk-dev] [PATCH v2 3/7] examples/power: add necessary changes to guest app David Hunt
2018-09-12 14:49   ` [dpdk-dev] [PATCH v2 4/7] examples/power: add host channel to power manager David Hunt
2018-09-12 14:49   ` [dpdk-dev] [PATCH v2 5/7] examples/power: add json string handling David Hunt
2018-09-12 14:49   ` [dpdk-dev] [PATCH v2 6/7] doc/vm_power_manager: add JSON interface API info David Hunt
2018-09-12 14:49   ` [dpdk-dev] [PATCH v2 7/7] examples/power: add json example files David Hunt
2018-09-14 13:53   ` [dpdk-dev] [PATCH v3 0/8] add json power policy interface for containers David Hunt
2018-09-14 13:53     ` [dpdk-dev] [PATCH v3 1/8] examples/power: add checks around hypervisor David Hunt
2018-09-25  9:20       ` Burakov, Anatoly
2018-09-25 13:47         ` Hunt, David
2018-09-14 13:54     ` [dpdk-dev] [PATCH v3 2/8] lib/power: add changes for host commands/policies David Hunt
2018-09-25  9:21       ` Burakov, Anatoly
2018-09-25 13:47         ` Hunt, David
2018-09-14 13:54     ` [dpdk-dev] [PATCH v3 3/8] examples/power: add necessary changes to guest app David Hunt
2018-09-25  9:23       ` Burakov, Anatoly
2018-09-14 13:54     ` [dpdk-dev] [PATCH v3 4/8] examples/power: add host channel to power manager David Hunt
2018-09-25  9:48       ` Burakov, Anatoly
2018-09-25 13:55         ` Hunt, David
2018-09-14 13:54     ` [dpdk-dev] [PATCH v3 5/8] examples/power: add json string handling David Hunt
2018-09-25 11:27       ` Burakov, Anatoly
2018-09-25 14:00         ` Hunt, David [this message]
2018-09-25 14:15           ` Burakov, Anatoly
2018-09-25 15:15             ` Hunt, David
2018-09-25 15:31               ` Burakov, Anatoly
2018-09-14 13:54     ` [dpdk-dev] [PATCH v3 6/8] examples/power: add meson/ninja build support David Hunt
2018-09-14 14:01       ` Bruce Richardson
2018-09-14 13:54     ` [dpdk-dev] [PATCH v3 7/8] doc/vm_power_manager: add JSON interface API info David Hunt
2018-09-14 13:54     ` [dpdk-dev] [PATCH v3 8/8] examples/power: add json example files David Hunt
2018-09-26 13:40     ` [dpdk-dev] [PATCH v4 0/11] add json power policy interface for containers David Hunt
2018-09-26 13:40       ` [dpdk-dev] [PATCH v4 01/11] examples/power: add checks around hypervisor David Hunt
2018-09-26 13:54         ` Burakov, Anatoly
2018-09-26 13:40       ` [dpdk-dev] [PATCH v4 02/11] examples/power: allow for number of vms to be zero David Hunt
2018-09-26 13:54         ` Burakov, Anatoly
2018-09-26 13:40       ` [dpdk-dev] [PATCH v4 03/11] lib/power: add changes for host commands/policies David Hunt
2018-09-26 13:54         ` Burakov, Anatoly
2018-09-26 13:40       ` [dpdk-dev] [PATCH v4 04/11] examples/power: add necessary changes to guest app David Hunt
2018-09-26 13:40       ` [dpdk-dev] [PATCH v4 05/11] examples/power: add host channel to power manager David Hunt
2018-09-26 14:22         ` Burakov, Anatoly
2018-09-26 13:40       ` [dpdk-dev] [PATCH v4 06/11] examples/power: increase allowed number of clients David Hunt
2018-09-26 14:23         ` Burakov, Anatoly
2018-09-26 13:40       ` [dpdk-dev] [PATCH v4 07/11] examples/power: add json string handling David Hunt
2018-09-26 14:24         ` Burakov, Anatoly
2018-09-26 13:40       ` [dpdk-dev] [PATCH v4 08/11] examples/power: clean up verbose messages David Hunt
2018-09-26 14:25         ` Burakov, Anatoly
2018-09-26 13:40       ` [dpdk-dev] [PATCH v4 09/11] examples/power: add meson/ninja build support David Hunt
2018-09-26 13:40       ` [dpdk-dev] [PATCH v4 10/11] doc/vm_power_manager: add JSON interface API info David Hunt
2018-09-26 14:32         ` Kovacevic, Marko
2018-09-26 13:40       ` [dpdk-dev] [PATCH v4 11/11] examples/power: add json example files David Hunt
2018-09-26 15:58         ` Kovacevic, Marko
2018-09-26 16:14           ` Hunt, David
2018-09-26 16:37       ` [dpdk-dev] [PATCH v5 0/10] add json power policy interface for containers David Hunt
2018-09-26 16:37         ` [dpdk-dev] [PATCH v5 01/10] examples/power: add checks around hypervisor David Hunt
2018-09-26 16:37         ` [dpdk-dev] [PATCH v5 02/10] examples/power: allow for number of vms to be zero David Hunt
2018-09-26 16:37         ` [dpdk-dev] [PATCH v5 03/10] lib/power: add changes for host commands/policies David Hunt
2018-09-26 16:37         ` [dpdk-dev] [PATCH v5 04/10] examples/power: add necessary changes to guest app David Hunt
2018-09-26 16:37         ` [dpdk-dev] [PATCH v5 05/10] examples/power: add host channel to power manager David Hunt
2018-09-26 16:37         ` [dpdk-dev] [PATCH v5 06/10] examples/power: increase allowed number of clients David Hunt
2018-09-26 16:37         ` [dpdk-dev] [PATCH v5 07/10] examples/power: add json string handling David Hunt
2018-09-30  1:54           ` Yao, Lei A
2018-10-01 11:03             ` Hunt, David
2018-09-26 16:37         ` [dpdk-dev] [PATCH v5 08/10] examples/power: clean up verbose messages David Hunt
2018-09-26 16:37         ` [dpdk-dev] [PATCH v5 09/10] examples/power: add meson/ninja build support David Hunt
2018-09-26 16:37         ` [dpdk-dev] [PATCH v5 10/10] doc/vm_power_manager: add JSON interface API info David Hunt
2018-09-29  2:42           ` Yao, Lei A
2018-10-01 11:02             ` Hunt, David
2018-10-02  8:43         ` [dpdk-dev] [PATCH v6 0/10] add json power policy interface for containers David Hunt
2018-10-02  8:43           ` [dpdk-dev] [PATCH v6 01/10] examples/power: add checks around hypervisor David Hunt
2018-10-02  8:43           ` [dpdk-dev] [PATCH v6 02/10] examples/power: allow for number of vms to be zero David Hunt
2018-10-02  8:43           ` [dpdk-dev] [PATCH v6 03/10] lib/power: add changes for host commands/policies David Hunt
2018-10-02  8:43           ` [dpdk-dev] [PATCH v6 04/10] examples/power: add necessary changes to guest app David Hunt
2018-10-02  8:43           ` [dpdk-dev] [PATCH v6 05/10] examples/power: add host channel to power manager David Hunt
2018-10-02  8:43           ` [dpdk-dev] [PATCH v6 06/10] examples/power: increase allowed number of clients David Hunt
2018-10-02  8:43           ` [dpdk-dev] [PATCH v6 07/10] examples/power: add json string handling David Hunt
2018-10-02  8:43           ` [dpdk-dev] [PATCH v6 08/10] examples/power: clean up verbose messages David Hunt
2018-10-02  8:43           ` [dpdk-dev] [PATCH v6 09/10] examples/power: add meson/ninja build support David Hunt
2018-10-02  8:43           ` [dpdk-dev] [PATCH v6 10/10] doc/vm_power_manager: add JSON interface API info David Hunt
2018-10-17 13:05           ` [dpdk-dev] [PATCH v7 0/10] add json power policy interface for containers David Hunt
2018-10-17 13:05             ` [dpdk-dev] [PATCH v7 01/10] examples/power: add checks around hypervisor David Hunt
2018-10-17 13:05             ` [dpdk-dev] [PATCH v7 02/10] examples/power: allow for number of vms to be zero David Hunt
2018-10-17 13:05             ` [dpdk-dev] [PATCH v7 03/10] lib/power: add changes for host commands/policies David Hunt
2018-10-17 13:05             ` [dpdk-dev] [PATCH v7 04/10] examples/power: add necessary changes to guest app David Hunt
2018-10-17 13:05             ` [dpdk-dev] [PATCH v7 05/10] examples/power: add host channel to power manager David Hunt
2018-10-17 13:05             ` [dpdk-dev] [PATCH v7 06/10] examples/power: increase allowed number of clients David Hunt
2018-10-17 13:05             ` [dpdk-dev] [PATCH v7 07/10] examples/power: add json string handling David Hunt
2018-10-17 13:05             ` [dpdk-dev] [PATCH v7 08/10] examples/power: clean up verbose messages David Hunt
2018-10-17 13:05             ` [dpdk-dev] [PATCH v7 09/10] examples/power: add meson/ninja build support David Hunt
2018-10-17 13:05             ` [dpdk-dev] [PATCH v7 10/10] doc/vm_power_manager: add JSON interface API info David Hunt
2018-10-26  0:05               ` Thomas Monjalon
2018-10-26  8:45             ` [dpdk-dev] [PATCH v7 0/10] add json power policy interface for containers 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=046d9290-55f9-8433-cbbd-b975f353fa47@intel.com \
    --to=david.hunt@intel.com \
    --cc=anatoly.burakov@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=john.mcnamara@intel.com \
    --cc=lei.a.yao@intel.com \
    --cc=stephen@networkplumber.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 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).