Thanks! Got it!

/Yalei

Florin Coras <fcoras.li...@gmail.com> 于2018年8月17日周五 上午12:00写道:

> Hi Yalei,
>
> Great! For now, I’m planning on keeping both the condvars and eventfds, at
> least until we completely understand the performance implications.
>
> As for your second question, the session layer will probably at one point
> start requesting that all attachments be done over the socket transport of
> the binary api. Note however that the socket transport is only used for
> bootstrapping the memfd shared memory segments and exchanging file
> descriptors. In other words, binary api exchanges between vcl/apps and vpp
> are still done over shared memory event queues.
>
> Cheers,
> Florin
>
> On Aug 16, 2018, at 4:12 AM, 汪亚雷 <wyland...@gmail.com> wrote:
>
> Thanks Florin,
>
> It works fine now. :)
> And two more questions:
> 1. Will eventfd replace the condvar way? it will be the default way for
> event queue?
> 2. Will socket api replace the vpe api in the future?
>
> Thanks!
>
> /Yalei
>
> Florin Coras <fcoras.li...@gmail.com> 于2018年8月15日周三 下午11:29写道:
>
>> Hi Yalei,
>>
>> You definitely need api-socket-name /run/vpp-api.sock, don’t comment that
>> out :-). If that’s not enabled, you can’t exchange file descriptors.
>>
>> Florin
>>
>> On Aug 15, 2018, at 5:43 AM, 汪亚雷 <wyland...@gmail.com> wrote:
>>
>> looks like  APP not attach to the segment vpp created like /dev/shm/$pid
>>
>> I think maybe need add the related ssvm_segment_attach in L125
>> in vl_api_application_attach_reply_t_handler, not sure, will test it.
>>
>> wylandrea <wyland...@gmail.com> 于2018年8月15日周三 下午12:10写道:
>>
>>> Thanks, Florin!  I tried, but unfortunately got segment fault like
>>> below(pull from master today):
>>>
>>> The segfault caused by the mq=0x204005440, the addr could not be refered
>>> in APP side,  looks like  the address is alloc in segment_manager_init
>>> L293,
>>>
>>> I used the example vcl.conf you provided, just comments the line
>>> "api-socket-name /run/vpp-api.sock".
>>>
>>> ==================================
>>>
>>> VCL<23469>: configured VCL debug level (4) from VCL_DEBUG!
>>> VCL<23469>: allocated VCL heap = 0x7fffe0000010, size 268435456
>>> (0x10000000)
>>> VCL<23469>: configured app_scope_local (1)
>>> VCL<23469>: configured app_scope_global (1)
>>> VCL<23469>: configured with mq with eventfd
>>> VCL<23469>: completed parsing vppcom config!
>>> vppcom_connect_to_vpp:803: VCL<23469>: app (ldp-23469-app) connecting to
>>> VPP api (/vpe-api)...
>>> [New Thread 0x7fffdffff700 (LWP 23474)]
>>> vppcom_connect_to_vpp:819: VCL<23469>: app (ldp-23469-app) is connected
>>> to VPP!
>>> [New Thread 0x7fffdf7fe700 (LWP 23475)]
>>> vppcom_app_create:714: VCL<23469>: sending session enable
>>> vppcom_app_create:724: VCL<23469>: sending app attach
>>>
>>> Program received signal SIGSEGV, Segmentation fault.
>>> [Switching to Thread 0x7fffdffff700 (LWP 23474)]
>>> 0x00007ffff510a403 in svm_msg_q_set_consumer_eventfd (mq=0x204005440,
>>> fd=0) at /home/wenjiang/vpp/build-data/../src/svm/message_queue.c:242
>>> 242       mq->q->consumer_evtfd = fd;
>>> Missing separate debuginfos, use: debuginfo-install dpdk-18.05-1.x86_64
>>> libgcc-4.8.5-28.el7_5.1.x86_64 libstdc++-4.8.5-28.el7_5.1.x86_64
>>> numactl-libs-2.0.9-7.el7.x86_64
>>> (gdb) bt
>>> #0  0x00007ffff510a403 in svm_msg_q_set_consumer_eventfd
>>> (mq=0x204005440, fd=0) at
>>> /home/wenjiang/vpp/build-data/../src/svm/message_queue.c:242
>>> #1  0x00007ffff4fede84 in vl_api_application_attach_reply_t_handler
>>> (mp=0x30066c40) at /home/wenjiang/vpp/build-data/../src/vcl/vcl_bapi.c:119
>>> #2  0x00007ffff5111bba in msg_handler_internal (am=0x7ffff5360880
>>> <api_main>, the_msg=0x30066c40, trace_it=0, do_it=1, free_it=1) at
>>> /home/wenjiang/vpp/build-data/../src/vlibapi/api_shared.c:425
>>> #3  0x00007ffff5111e1a in vl_msg_api_handler (the_msg=0x30066c40) at
>>> /home/wenjiang/vpp/build-data/../src/vlibapi/api_shared.c:551
>>> #4  0x00007ffff5113344 in vl_msg_api_queue_handler (q=0x30207ec0) at
>>> /home/wenjiang/vpp/build-data/../src/vlibapi/api_shared.c:762
>>> #5  0x00007ffff5117f4e in rx_thread_fn (arg=0x0) at
>>> /home/wenjiang/vpp/build-data/../src/vlibmemory/memory_client.c:94
>>> #6  0x00007ffff763ce25 in start_thread (arg=0x7fffdffff700) at
>>> pthread_create.c:308
>>> #7  0x00007ffff715ebad in clone () at
>>> ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
>>>
>>> ============================
>>>
>>> startup.conf
>>> root@192.168.122.252:/home/wenjiang/dmm/release/bin (master) $ cat
>>> ~/startup.conf
>>> unix {
>>>   #nodaemon
>>>   interactive
>>>   log /var/log/vpp/vpp.log
>>>   cli-listen localhost:5002
>>>   full-coredump
>>> }
>>>
>>> api-trace {
>>>   on
>>> }
>>>
>>>
>>> dpdk {
>>>   socket-mem 1024
>>>   dev 0000:00:09.0
>>> }
>>>
>>> session { evt_qs_memfd_seg  }
>>> #socksvr { socket-name /run/vpp-api.sock }
>>>
>>> ==================================
>>> root@192.168.122.252:/home/wenjiang/dmm/release/bin (master) $ cat
>>> /etc/vpp/vcl.conf
>>> vcl {
>>>   #rx-fifo-size 4000000
>>>   #tx-fifo-size 4000000
>>>   app-scope-local
>>>   app-scope-global
>>>   #api-socket-name /run/vpp-api.sock
>>>   use-mq-eventfd
>>> }
>>>
>>>
>>>
>>>
>>>
>>>
>>> Florin Coras <fcoras.li...@gmail.com> 于2018年8月14日周二 下午11:15写道:
>>>
>>>> Hi Yalei,
>>>>
>>>> You have an example of how to write a vcl.conf file in
>>>> vcl/vcl_test.conf. It’s just an example, so if you want to try out eventfd,
>>>> here’s what I’ve been recently using:
>>>>
>>>> vcl {
>>>>   rx-fifo-size 4000000
>>>>   tx-fifo-size 4000000
>>>>   app-scope-local
>>>>   app-scope-global
>>>>   api-socket-name /run/vpp-api.sock
>>>>   use-mq-eventfd
>>>> }
>>>>
>>>> For this to work, vpp must come up with the binary api socket transport
>>>> configured and the session layer event queues must be allocated in a memfd
>>>> segment. So, add the following to your vpp startup conf:
>>>>
>>>> socksvr { socket-name /run/vpp-api.sock }
>>>> session { evt_qs_memfd_seg  }
>>>>
>>>> Also, to have vcl read your config file, remember to do something like:
>>>> "export VCL_CONFIG=/path/to/your/file”. Finally, this is still very much
>>>> ongoing work so if you hit any issues, do let me know :-)
>>>>
>>>> Hope this helps,
>>>> Florin
>>>>
>>>> > On Aug 14, 2018, at 5:38 AM, 汪亚雷 <wyland...@gmail.com> wrote:
>>>> >
>>>> > Hi Florin,
>>>> >
>>>> > vppcom_cfg_read_file will try to parse the vcl.conf, but where could
>>>> I get the example?
>>>> >
>>>> > actually I want to have a try "use-mq-eventfd"
>>>> >
>>>> > Thanks!
>>>> >
>>>> > /yalei
>>>>
>>>> -=-=-=-=-=-=-=-=-=-=-=-
>>> Links: You receive all messages sent to this group.
>>>
>>> View/Reply Online (#10153): https://lists.fd.io/g/vpp-dev/message/10153
>>> Mute This Topic: https://lists.fd.io/mt/24524596/675329
>>> Group Owner: vpp-dev+ow...@lists.fd.io
>>> Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [wyland...@gmail.com]
>>> -=-=-=-=-=-=-=-=-=-=-=-
>>>
>>
>>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#10192): https://lists.fd.io/g/vpp-dev/message/10192
Mute This Topic: https://lists.fd.io/mt/24524596/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to