<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, May 9, 2019 at 3:16 PM Balamuruhan S <<a href="mailto:bala24@linux.vnet.ibm.com">bala24@linux.vnet.ibm.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Wed, May 08, 2019 at 04:44:46PM +0800, Li Wang wrote:<br>
> Numa test failed on such machine which has non-continuous numa nodes,<br>
> it gets wrong data because of the below syntax rule is not applicable<br>
> to that special situation.<br>
>   ` numastat -p $pid |awk '/^Total/ {print $'$((node+2))'}'<br>
> In this patch, we fix that via a bit complex way of awk to get the<br>
> allocated memory in specified node.<br>
> <br>
>   # numactl -H<br>
>   available: 2 nodes (0,8)<br>
>   node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18<br>
>                19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34<br>
>                35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50<br>
>                51 52 53 54 55 56 57 58 59 60 61 62 63<br>
>   node 0 size: 257741 MB<br>
>   node 0 free: 253158 MB<br>
>   node 8 cpus: 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79<br>
>                80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95<br>
>                96 97 98 99 100 101 102 103 104 105 106 107 108<br>
>                109 110 111 112 113 114 115 116 117 118 119 120<br>
>                121 122 123 124 125 126 127<br>
>   node 8 size: 261752 MB<br>
>   node 8 free: 240933 MB<br>
>   node distances:<br>
>   node   0   8<br>
>     0:  10  40<br>
>     8:  40  10<br>
> <br>
>   # numastat -p $pid<br>
>   Per-node process memory usage (in MBs) for PID 34168 (support_numa)<br>
>                              Node 0          Node 8           Total<br>
>                     --------------- --------------- ---------------<br>
>   Huge                         0.00            0.00            0.00<br>
>   Heap                         0.00            0.12            0.12<br>
>   Stack                        0.00            0.06            0.06<br>
>   Private                      1.62            1.50            3.12<br>
>   ----------------  --------------- --------------- ---------------<br>
>   Total                        1.62            1.69            3.31<br>
> <br>
> Signed-off-by: Li Wang <<a href="mailto:liwang@redhat.com" target="_blank">liwang@redhat.com</a>><br>
> Cc: Chunyu Hu <<a href="mailto:chuhu@redhat.com" target="_blank">chuhu@redhat.com</a>><br>
> Cc: Cyril Hrubis <<a href="mailto:chrubis@suse.cz" target="_blank">chrubis@suse.cz</a>><br>
> ---<br>
>  testcases/kernel/numa/numa01.sh | 26 ++++++++++++++++++++++----<br>
>  1 file changed, 22 insertions(+), 4 deletions(-)<br>
> <br>
> diff --git a/testcases/kernel/numa/numa01.sh b/testcases/kernel/numa/numa01.sh<br>
> index 33393ac8d..7f3dee849 100755<br>
> --- a/testcases/kernel/numa/numa01.sh<br>
> +++ b/testcases/kernel/numa/numa01.sh<br>
> @@ -52,9 +52,18 @@ TST_NEEDS_CMDS="awk bc numactl numastat"<br>
>  extract_numastat_p()<br>
>  {<br>
>       local pid=$1<br>
> -     local node=$(($2 + 2))<br>
> -<br>
> -     echo $(numastat -p $pid |awk '/^Total/ {print $'$node'}')<br>
> +     local node=$2<br>
> +<br>
> +     echo $(numastat -p $pid |               \<br>
> +             awk -v node=$node '/Node/ {     \<br>
> +             gsub("Node", "");               \<br>
> +             for (i=0; i<NF; i++)            \<br>
> +                     if ($i == node)         \<br>
> +                             col=i+1;        \<br>
> +                     next                    \<br>
> +             }                               \<br>
> +             /^Total/ {print $col}'          \<br>
> +     )<br>
>  }<br>
<br>
If we can use extract_numastat_p0 with node_index then the existing code<br>
works, for example if can index while iterating $node_list and use this<br>
with extract_numastat_p0 then it should work.<br></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">Hi Bala,</div><br></div><div><div class="gmail_default" style="font-size:small">Sorry, I don't fully understand what's you mean here :(. Could you explain something more for this method?</div></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
This is just my thoughts, please feel free to correct me if I miss or<br>
it is something wrong. Thanks!<br>
<br>
-- Bala<br>
>  <br>
>  check_for_support_numa()<br>
> @@ -363,7 +372,16 @@ test9()<br>
>               pid=$!<br>
>               TST_RETRY_FUNC "check_for_support_numa $pid" 0<br>
>  <br>
> -             Mem_huge=$(echo $(numastat -p $pid |awk '/^Huge/ {print $'$((node+2))'}'))<br>
> +             Mem_huge=$(echo $(numastat -p $pid |    \<br>
> +                     awk -v node=$node '/Node/ {     \<br>
> +                     gsub("Node", "");               \<br>
> +                     for (i=0; i<NF; i++)            \<br>
> +                             if ($i == node)         \<br>
> +                                     col=i+1;        \<br>
> +                             next                    \<br>
> +                     }                               \<br>
> +                     /^Huge/ {print $col}')          \<br>
> +             )<br>
>               Mem_huge=$((${Mem_huge%.*} * 1024))<br>
>  <br>
>               if [ "$Mem_huge" -lt "$HPAGE_SIZE" ]; then<br>
> -- <br>
> 2.20.1<br>
> <br>
> <br>
> -- <br>
> Mailing list info: <a href="https://lists.linux.it/listinfo/ltp" rel="noreferrer" target="_blank">https://lists.linux.it/listinfo/ltp</a><br>
<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Regards,<br></div><div>Li Wang<br></div></div></div></div>