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 <mailto: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 
>> <mailto: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 <mailto: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 
>> <mailto: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 
>> <mailto: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 <mailto: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 
>> > <mailto: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 
>> <https://lists.fd.io/g/vpp-dev/message/10153>
>> Mute This Topic: https://lists.fd.io/mt/24524596/675329 
>> <https://lists.fd.io/mt/24524596/675329>
>> Group Owner: vpp-dev+ow...@lists.fd.io <mailto:vpp-dev%2bow...@lists.fd.io>
>> Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub 
>> <https://lists.fd.io/g/vpp-dev/unsub>  [wyland...@gmail.com 
>> <mailto:wyland...@gmail.com>]
>> -=-=-=-=-=-=-=-=-=-=-=-
> 

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#10187): https://lists.fd.io/g/vpp-dev/message/10187
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