Hi Maxim,

To return 2MB we need to change the logic in huge_page_size()
(odP-system_info.c)function as below.
Do not know about old logic.

I do not see huge page allocation error if I change the logic as below.

diff --git a/platform/linux-generic/odp_system_info.c
b/platform/linux-generic/odp_system_info.c
index 0f1f3c7..2173763 100644
--- a/platform/linux-generic/odp_system_info.c
+++ b/platform/linux-generic/odp_system_info.c
@@ -95,7 +95,7 @@ static int huge_page_size(void)
                if (sscanf(dirent->d_name, "hugepages-%i", &temp) != 1)
                        continue;

-               if (temp > size)
+               if (temp < size)
                        size = temp;
        }


On Tue, May 10, 2016 at 6:38 PM, Maxim Uvarov <maxim.uva...@linaro.org>
wrote:

> On 05/10/16 15:53, nousi wrote:
>
>> value is zero in all the huge page parameters.
>>
>>
> That is not the problem. Problem is that we have call:
>
> /**
>  * Huge page size in bytes
>  *
>  * @return Huge page size in bytes
>  */
> uint64_t odp_sys_huge_page_size(void);
>
> which worked well for only one huge page sizes.
>
>
> platform/linux-generic/odp_system_info.c
> static int huge_page_size(void)
> {
>         if (sscanf(dirent->d_name, "hugepages-%i", &temp) != 1)
>             continue;
>
>
> So because 1 GB pages in /proc lists first now then
> odp_sys_huge_page_size() returns 1 GB, not 2 MB pages.
>
> In general we need to think how to fix it cleanly.  Probably modify api of
> odp_sys_huge_page_size() to return
> all available huge page sizes.
>
> So it looks like a bug, thank you for taking attention about it.
>
> Maxim.
>
>
>
> root@ubuntu-15-10:/sys/kernel/mm/hugepages/hugepages-1048576kB# ls -l
>> total 0
>> -r--r--r-- 1 root root 4096 May 10 18:15 free_hugepages
>> -rw-r--r-- 1 root root 4096 May 10 18:15 nr_hugepages
>> -rw-r--r-- 1 root root 4096 May 10 18:15 nr_hugepages_mempolicy
>> -rw-r--r-- 1 root root 4096 May 10 18:15 nr_overcommit_hugepages
>> -r--r--r-- 1 root root 4096 May 10 18:15 resv_hugepages
>> -r--r--r-- 1 root root 4096 May 10 18:15 surplus_hugepages
>> root@ubuntu-15-10:/sys/kernel/mm/hugepages/hugepages-1048576kB# cat
>> free_hugepages
>> 0
>> root@ubuntu-15-10:/sys/kernel/mm/hugepages/hugepages-1048576kB# cat
>> nr_hugepages
>> 0
>> root@ubuntu-15-10:/sys/kernel/mm/hugepages/hugepages-1048576kB# cat
>> nr_hugepages_mempolicy
>> 0
>> root@ubuntu-15-10:/sys/kernel/mm/hugepages/hugepages-1048576kB# cat
>> nr_overcommit_hugepages
>> 0
>> root@ubuntu-15-10:/sys/kernel/mm/hugepages/hugepages-1048576kB# cat
>> resv_hugepages
>> 0
>> root@ubuntu-15-10:/sys/kernel/mm/hugepages/hugepages-1048576kB# cat
>> surplus_hugepages
>> 0
>> root@ubuntu-15-10:/sys/kernel/mm/hugepages/hugepages-1048576kB#
>>
>> On Tue, May 10, 2016 at 6:19 PM, nousi <bnousi...@gmail.com <mailto:
>> bnousi...@gmail.com>> wrote:
>>
>>     yes, there are two directories under "/sys/kernel/mm/hugepages"
>>
>>     root@ubuntu-15-10:/sys/kernel/mm/hugepages# ls -l
>>     total 0
>>     drwxr-xr-x 2 root root 0 May 10 18:15 hugepages-1048576kB
>>     drwxr-xr-x 2 root root 0 May 10 18:15 hugepages-2048kB
>>
>>
>>     On Tue, May 10, 2016 at 6:13 PM, Maxim Uvarov
>>     <maxim.uva...@linaro.org <mailto:maxim.uva...@linaro.org>> wrote:
>>
>>         In my case there is 1 Gb huge page in:
>>         /sys/kernel/mm/hugepages
>>
>>         and odp_shm_reserve() just rounds all allocations to 1 GB:
>>
>>         #ifdef MAP_HUGETLB
>>             huge_sz = odp_sys_huge_page_size(); <--- 1 GB here
>>             need_huge_page =  (huge_sz && alloc_size > page_sz);
>>             /* munmap for huge pages requires sizes round up by page */
>>             alloc_hp_size = (size + align + (huge_sz - 1)) & (-huge_sz);
>>         #endif
>>
>>         Do you see the same thing?
>>
>>         Maxim.
>>
>>         On 05/10/16 15:07, nousi wrote:
>>
>>             Hi Maxim,
>>
>>             Thanks for your support.
>>
>>             mamp return below error;
>>             "mmap: Cannot allocate memory"
>>             "mount -t hugetlbfs none /mnt/hugetlbfs" also does not help.
>>
>>             Huge page allocation success in below two calls after that
>>             it fails.
>>             1) odp_thread_globals
>>             2) odp_buffer_pools
>>
>>             Please have a look at the console logs below.
>>
>>             odp_shared_memory.c:299:odp_shm_reserve():
>>             odp_thread_globals: huge page allocation success !
>>             odp_shared_memory.c:299:odp_shm_reserve():
>>             odp_buffer_pools: huge page allocation success !
>>             odp_pool.c:104:odp_pool_init_global():
>>             Pool init global
>>             odp_pool.c:105:odp_pool_init_global(): pool_entry_s size
>>           8512
>>             odp_pool.c:106:odp_pool_init_global(): pool_entry_t size
>>           8512
>>             odp_pool.c:107:odp_pool_init_global(): odp_buffer_hdr_t
>>             size 216
>>             odp_pool.c:108:odp_pool_init_global():
>>             *mmap: Cannot allocate memory*
>>             odp_queue.c:130:odp_queue_init_global():Queue init ...
>>             odp_shared_memory.c:297:odp_shm_reserve(): odp_queues:
>>                     No huge pages, fall back to normal pages,
>>                     check: /proc/sys/vm/nr_hugepages.
>>
>>
>>             Recently I Moved from Ubuntu 14.04 to 15.10, in Ubuntu
>>             14.04 I had run calssfier example without any huge page
>>             allocation error.
>>
>>             On Tue, May 10, 2016 at 3:50 PM, Maxim Uvarov
>>             <maxim.uva...@linaro.org <mailto:maxim.uva...@linaro.org>
>>             <mailto:maxim.uva...@linaro.org
>>             <mailto:maxim.uva...@linaro.org>>> wrote:
>>
>>                 Does:
>>                 mount -t hugetlbfs none /mnt/hugetlbfs
>>
>>                 help?
>>
>>                 Maxim.
>>
>>
>>                 On 10 May 2016 at 13:16, Maxim Uvarov
>>             <maxim.uva...@linaro.org <mailto:maxim.uva...@linaro.org>
>>                 <mailto:maxim.uva...@linaro.org
>>             <mailto:maxim.uva...@linaro.org>>> wrote:
>>
>>                     looks like you have enough free HP. Which error
>>             returns
>>                     mmap()  on try with HP?
>>
>>                     On 10 May 2016 at 11:57, nousi
>>             <bnousi...@gmail.com <mailto:bnousi...@gmail.com>
>>                     <mailto:bnousi...@gmail.com
>>
>>             <mailto:bnousi...@gmail.com>>> wrote:
>>
>>                         linaro@ubuntu-15-10:~$ cat
>>             /proc/sys/vm/nr_hugepages
>>                         1024
>>                         linaro@ubuntu-15-10:~$
>>
>>                         linaro@ubuntu-15-10:~$ cat /proc/meminfo
>>                         MemTotal:        8061836 kB
>>                         MemFree:          470516 kB
>>                         MemAvailable:    1901932 kB
>>                         Buffers:           92600 kB
>>                         Cached:          1939696 kB
>>                         SwapCached:         7516 kB
>>                         Active:          3238960 kB
>>                         Inactive:        1804492 kB
>>                         Active(anon):    2712440 kB
>>                         Inactive(anon):  1069492 kB
>>                         Active(file):     526520 kB
>>                         Inactive(file):   735000 kB
>>                         Unevictable:          76 kB
>>                         Mlocked:              76 kB
>>                         SwapTotal:      16547836 kB
>>                         SwapFree:       16370160 kB
>>                         Dirty:             19816 kB
>>                         Writeback:             0 kB
>>                         AnonPages:       3004784 kB
>>                         Mapped:           679960 kB
>>                         Shmem:            770776 kB
>>                         Slab:             264692 kB
>>                         SReclaimable:     212172 kB
>>                         SUnreclaim:        52520 kB
>>                         KernelStack:       11952 kB
>>                         PageTables:        65780 kB
>>                         NFS_Unstable:          0 kB
>>                         Bounce:                0 kB
>>                         WritebackTmp:          0 kB
>>                         CommitLimit:    19530176 kB
>>                         Committed_AS:   11165432 kB
>>                         VmallocTotal:   34359738367 kB
>>                         VmallocUsed:      410416 kB
>>                         VmallocChunk:   34358947836 kB
>>                         HardwareCorrupted:     0 kB
>>                         AnonHugePages:    583680 kB
>>                         CmaTotal:              0 kB
>>                         CmaFree:               0 kB
>>                         HugePages_Total:    1024
>>                         HugePages_Free:     1022
>>                         HugePages_Rsvd:     1022
>>                         HugePages_Surp:        0
>>                         Hugepagesize:       2048 kB
>>                         DirectMap4k:      234400 kB
>>                         DirectMap2M:     6991872 kB
>>                         DirectMap1G:     2097152 kB
>>                         linaro@ubuntu-15-10:~$
>>
>>
>>                         On Tue, May 10, 2016 at 12:38 PM, Maxim Uvarov
>>                         <maxim.uva...@linaro.org
>>             <mailto:maxim.uva...@linaro.org>
>>             <mailto:maxim.uva...@linaro.org
>>             <mailto:maxim.uva...@linaro.org>>>
>>                         wrote:
>>
>>                             Please put output for:
>>                             cat /proc/meminfo
>>                             cat /proc/sys/vm/nr_hugepages
>>
>>                             Thank you,
>>                             Maxim.
>>
>>
>>
>>                             On 10 May 2016 at 08:36, nousi
>>             <bnousi...@gmail.com <mailto:bnousi...@gmail.com>
>>                             <mailto:bnousi...@gmail.com
>>             <mailto:bnousi...@gmail.com>>> wrote:
>>
>>                                 mmap is failing in "odp_shm_reserve"
>>             function
>>                                 (odp_queue_init_global() --->
>>             odp_shm_reserve()
>>                                 ---> odp_shm_reserve())
>>
>>
>>                                 debug logs:
>>
>>             root@ubuntu-15-10:/home/linaro/linaro/odp/example/classifier#
>>                                 ./odp_classifier -i eno1 -m 0 -p
>>                                 "ODP_PMR_SIP_ADDR:192.168.10.11
>>             <tel:192.168.10.11>:FFFFFFFF:queue1"
>>                                 -p "ODP_PMR_SIP_ADDR:10.130.69.0
>>             <http://10.130.69.0>:000000FF:queue2"
>>                                 -p "ODP_PMR_SIP_ADDR:10.130.68.0
>>             <http://10.130.68.0>:FFFFFE00:queue3"
>>
>>             odp_pool.c:104:odp_pool_init_global():
>>                                 Pool init global
>>             odp_pool.c:105:odp_pool_init_global():
>>                                 pool_entry_s size  8512
>>             odp_pool.c:106:odp_pool_init_global():
>>                                 pool_entry_t size  8512
>>             odp_pool.c:107:odp_pool_init_global():
>>                                 odp_buffer_hdr_t size 216
>>             odp_pool.c:108:odp_pool_init_global():
>>             odp_queue.c:130:odp_queue_init_global():Queue init
>>                                 ...
>>             odp_shared_memory.c:296:odp_shm_reserve():odp_queues:
>>                                     :: No huge pages, fall back to
>>             normal pages,
>>                                     check: /proc/sys/vm/nr_hugepages.
>>             odp_queue.c:154:odp_queue_init_global():done
>>             odp_queue.c:155:odp_queue_init_global():Queue init
>>                                 global
>>             odp_queue.c:157:odp_queue_init_global(): struct
>>                                 queue_entry_s size 320
>>             odp_queue.c:159:odp_queue_init_global():
>>                                 queue_entry_t size   320
>>             odp_queue.c:160:odp_queue_init_global():
>>             odp_schedule.c:145:odp_schedule_init_global():Schedule
>>                                 init ...
>>             odp_shared_memory.c:296:odp_shm_reserve():odp_scheduler:
>>                                     :: No huge pages, fall back to
>>             normal pages,
>>                                     check: /proc/sys/vm/nr_hugepages.
>>             odp_shared_memory.c:296:odp_shm_reserve():odp_sched_pool:
>>                                     :: No huge pages, fall back to
>>             normal pages,
>>                                     check: /proc/sys/vm/nr_hugepages.
>>             odp_schedule.c:226:odp_schedule_init_global():done
>>             odp_shared_memory.c:296:odp_shm_reserve():odp_pktio_entries:
>>                                     :: No huge pages, fall back to
>>             normal pages,
>>                                     check: /proc/sys/vm/nr_hugepages.
>>             odp_shared_memory.c:296:odp_shm_reserve():crypto_pool:
>>                                     :: No huge pages, fall back to
>>             normal pages,
>>                                     check: /proc/sys/vm/nr_hugepages.
>>             odp_shared_memory.c:296:odp_shm_reserve():shm_odp_cos_tbl:
>>                                     :: No huge pages, fall back to
>>             normal pages,
>>                                     check: /proc/sys/vm/nr_hugepages.
>>             odp_shared_memory.c:296:odp_shm_reserve():shm_odp_pmr_tbl:
>>                                     :: No huge pages, fall back to
>>             normal pages,
>>                                     check: /proc/sys/vm/nr_hugepages.
>>                                 main :: odp_init_global done!
>>             odp_classifier.c:500:main():main :: odp_init_local
>>                                 done!
>>             odp_classifier.c:505:main():main ::
>>                                 odp_shm_reserve done!
>>
>>                                 ODP system info
>>                                 ---------------
>>                                 ODP API version: 1.10.0
>>                                 CPU model: Intel(R) Core(TM) i7-5600U CPU
>>                                 CPU freq (hz): 2600000000
>>                                 Cache line size: 64
>>                                 CPU count:       4
>>
>>                                 Running ODP appl: "odp_classifier"
>>                                 -----------------
>>                                 Using IF:eno1
>>
>>                                 num worker threads: 2
>>                                 first CPU:          2
>>                                 cpu mask: 0xC
>>             odp_shared_memory.c:296:odp_shm_reserve():packet_pool:
>>                                     :: No huge pages, fall back to
>>             normal pages,
>>                                     check: /proc/sys/vm/nr_hugepages.
>>             odp_pool.c:759:odp_pool_print():Pool info
>>             odp_pool.c:760:odp_pool_print():---------
>>             odp_pool.c:762:odp_pool_print(): pool     1
>>             odp_pool.c:764:odp_pool_print(): name packet_pool
>>             odp_pool.c:769:odp_pool_print(): pool type packet
>>             odp_pool.c:771:odp_pool_print(): pool storage ODP
>>                                 managed shm handle 11
>>             odp_pool.c:773:odp_pool_print(): pool status active
>>             odp_pool.c:777:odp_pool_print(): pool opts
>>                                 segmented, non-zeroized, created
>>             odp_pool.c:778:odp_pool_print(): pool base
>>                                 0x7f5091aab000
>>             odp_pool.c:780:odp_pool_print(): pool size 1310720
>>                                 (320 pages)
>>             odp_pool.c:781:odp_pool_print(): pool mdata base
>>                                 0x7f5091bb5940
>>             odp_pool.c:782:odp_pool_print(): udata size     0
>>             odp_pool.c:783:odp_pool_print(): headroom     66
>>             odp_pool.c:784:odp_pool_print(): tailroom     0
>>             odp_pool.c:791:odp_pool_print(): seg length 1856
>>                                 requested, 1936 used
>>             odp_pool.c:793:odp_pool_print(): pkt length 1856
>>                                 requested, 1936 used
>>             odp_pool.c:795:odp_pool_print(): num bufs 564
>>             odp_pool.c:797:odp_pool_print(): bufs available 564
>>             odp_pool.c:798:odp_pool_print(): bufs in use     0
>>             odp_pool.c:799:odp_pool_print(): buf allocs     0
>>             odp_pool.c:800:odp_pool_print(): buf frees      0
>>             odp_pool.c:801:odp_pool_print(): buf empty      0
>>             odp_pool.c:803:odp_pool_print(): blk size 1936
>>             odp_pool.c:805:odp_pool_print(): blks available 564
>>             odp_pool.c:806:odp_pool_print(): blk allocs     0
>>             odp_pool.c:807:odp_pool_print(): blk frees      0
>>             odp_pool.c:808:odp_pool_print(): blk empty      0
>>             odp_pool.c:809:odp_pool_print(): buf high wm
>>                                 value   282
>>             odp_pool.c:810:odp_pool_print(): buf high wm count   0
>>             odp_pool.c:811:odp_pool_print(): buf low wm
>>                                 value    141
>>             odp_pool.c:812:odp_pool_print(): buf low wm count    0
>>             odp_pool.c:813:odp_pool_print(): blk high wm
>>                                 value   282
>>             odp_pool.c:814:odp_pool_print(): blk high wm count   0
>>             odp_pool.c:815:odp_pool_print(): blk low wm
>>                                 value    141
>>             odp_pool.c:816:odp_pool_print(): blk low wm count    0
>>                                 main :: odp_pool_print done!
>>             odp_packet_io.c:230:setup_pktio_entry():eno1 uses
>>                                 socket_mmap
>>                                   created pktio:01, dev:eno1, queue
>>             mode (ATOMIC
>>                                 queues)
>>                                       default pktio01
>>             odp_shared_memory.c:296:odp_shm_reserve():
>>                                 DefaultPool:
>>                                     :: No huge pages, fall back to
>>             normal pages,
>>                                     check: /proc/sys/vm/nr_hugepages.
>>             odp_shared_memory.c:296:odp_shm_reserve():
>>                                 queue1Pool0:
>>                                     :: No huge pages, fall back to
>>             normal pages,
>>                                     check: /proc/sys/vm/nr_hugepages.
>>             odp_shared_memory.c:296:odp_shm_reserve():
>>                                 queue2Pool1:
>>                                     :: No huge pages, fall back to
>>             normal pages,
>>                                     check: /proc/sys/vm/nr_hugepages.
>>             odp_shared_memory.c:296:odp_shm_reserve():
>>                                 queue3Pool2:
>>                                     :: No huge pages, fall back to
>>             normal pages,
>>                                     check: /proc/sys/vm/nr_hugepages.
>>
>>             ----------------------------------------
>>                                 CLASSIFIER EXAMPLE STATISTICS
>>             ----------------------------------------
>>                                 CONFIGURATION
>>
>>                                 COS    VALUE     MASK
>>             ----------------------------------------
>>                                 queue1 192.168.10.11
>>             <tel:192.168.10.11> FFFFFFFF
>>                                 queue2 10.130.69.0 000000FF
>>                                 queue3 10.130.68.0 FFFFFE00
>>
>>                                 RECEIVED PACKETS
>>             ----------------------------------------
>>                                 queue1 |queue2 |queue3 |DefaultCos
>>             |Total Packets
>>                                 queue  pool |queue  pool |queue  pool
>>             |queue  pool  |
>>                                 845    845 |0      0 |0     0 |38
>>         38    |883
>>
>>
>>                                 On Mon, May 9, 2016 at 9:00 PM, Bill
>>             Fischofer
>>                                 <bill.fischo...@linaro.org
>>             <mailto:bill.fischo...@linaro.org>
>>                                 <mailto:bill.fischo...@linaro.org
>>             <mailto:bill.fischo...@linaro.org>>> wrote:
>>
>>
>>
>>                                     On Mon, May 9, 2016 at 6:57 AM, nousi
>>                                     <bnousi...@gmail.com
>>             <mailto:bnousi...@gmail.com>
>>                                     <mailto:bnousi...@gmail.com
>>             <mailto:bnousi...@gmail.com>>> wrote:
>>
>>
>>                                         Hi All,
>>
>>                                         Pleas help me in running ODP
>>             classifier
>>                                         example with huge pages.
>>                                         In ubuntu 15.10 by default
>>             interface
>>                                         naming as "eno1" and value in
>>             "/proc/sys/vm/nr_hugepages." is 1024.
>>                                         classifier example program
>>             could not able
>>                                         to use huge pages even though
>>             nr_hugepages
>>                                         value is non zero.
>>                                         I could able to run the
>>             classier example,
>>                                         but it is not using huge pages.
>>                                         /*
>>                                         console log is pasted below
>>             for you reference.
>>
>>             */root@odp/example/classifier#
>>
>>                                         ./odp_classifier -i eno1 -m 0 -p
>>             "ODP_PMR_SIP_ADDR:192.168.10.11
>>             <tel:192.168.10.11>:FFFFFFFF:queue1"
>>                                         -p
>>             "ODP_PMR_SIP_ADDR:10.130.69.0
>>             <http://10.130.69.0>:000000FF:queue2"
>>                                         -p
>>             "ODP_PMR_SIP_ADDR:10.130.68.0
>>             <http://10.130.68.0>:FFFFFE00:queue3"
>>
>>             odp_pool.c:104:odp_pool_init_global():
>>                                         Pool init global
>>             odp_pool.c:105:odp_pool_init_global():
>>                                         pool_entry_s size     8512
>>             odp_pool.c:106:odp_pool_init_global():
>>                                         pool_entry_t size     8512
>>             odp_pool.c:107:odp_pool_init_global():
>>                                         odp_buffer_hdr_t size 216
>>             odp_pool.c:108:odp_pool_init_global():
>>             odp_queue.c:130:odp_queue_init_global():Queue
>>                                         init ...
>>             odp_shared_memory.c:296:odp_shm_reserve():
>>                                         odp_queues:
>>                                             No huge pages, fall back
>>             to normal pages,
>>                                             check:
>>             /proc/sys/vm/nr_hugepages.
>>
>>
>>                                     This is an informational message
>>             saying that
>>                                     the linux-generic implementation
>>             was unable to
>>                                     allocate huge pages so it's
>>             falling back to
>>                                     normal pages.  I'm not sure why
>>             you're seeing
>>                                     that except that it seems that some
>>                                     allocations may have been
>>             successful (those in
>>                                     odp_pool.c) while those for queue
>>                                     initialization were not.
>>
>>                                     I'll let others who are more
>>             expert in this
>>                                     area chime in with some additional
>>             thoughts.
>>
>>
>>
>>
>>                                         Thanks & Regards,
>>                                         /B.Nousilal,
>>                                         /
>>
>>             _______________________________________________
>>                                         lng-odp mailing list
>>             lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org>
>>                                                    <mailto:
>> lng-odp@lists.linaro.org
>>             <mailto:lng-odp@lists.linaro.org>>
>>             https://lists.linaro.org/mailman/listinfo/lng-odp
>>
>>
>>
>>
>>
>>                                 --  /Thanks & Regards,
>>                                 B.Nousilal,
>>                                 /
>>
>>             _______________________________________________
>>                                 lng-odp mailing list
>>             lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org>
>>                                 <mailto:lng-odp@lists.linaro.org
>>             <mailto:lng-odp@lists.linaro.org>>
>>             https://lists.linaro.org/mailman/listinfo/lng-odp
>>
>>
>>
>>
>>
>>                         --             /Thanks & Regards,
>>                         B.Nousilal,
>>                         /
>>
>>
>>
>>
>>
>>
>>             --             /Thanks & Regards,
>>             B.Nousilal,
>>             /
>>
>>
>>
>>
>>
>>     --     /Thanks & Regards,
>>     B.Nousilal,
>>     /
>>
>>
>>
>>
>> --
>> /Thanks & Regards,
>> B.Nousilal,
>> /
>>
>
>


-- 


*Thanks & Regards,B.Nousilal,*
_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to