Ping.
So what is your decision on this. > 在 2015年12月10日,下午1:06,HePeng <xnhp0...@icloud.com> 写道: > >> >> 在 2015年12月9日,下午6:49,Ola Liljedahl <ola.liljed...@linaro.org >> <mailto:ola.liljed...@linaro.org>> 写道: >> >> On 9 December 2015 at 06:31, HePeng <xnhp0...@icloud.com >> <mailto:xnhp0...@icloud.com>> wrote: >> >>> 在 2015年12月8日,下午9:34,Ola Liljedahl <ola.liljed...@linaro.org >>> <mailto:ola.liljed...@linaro.org>> 写道: >>> >>> On 8 December 2015 at 12:42, Bill Fischofer <bill.fischo...@linaro.org >>> <mailto:bill.fischo...@linaro.org>> wrote: >>> This is an interesting topic. I'd like to discuss this a bit during >>> today's ODP public call. >>> >>> I think the issue is that while a ring is a very useful implementation >>> construct its semantics are very SW centric. >>> But isn't the use case here SW centric? >>> >>> Perhaps there's opportunity here for a new Queue type that would permit an >>> implementation to implement the queue API as a ring for additional >>> performance? >>> I think it is a bad idea to overload the ODP queue with another type of >>> usage and implied implementation. Better to define a new ODP object. >>> >>> What are the real requirements of the "ring" as used by the cuckoo hash >>> design? Enqueue/dequeue operations. Fixed size is OK? Storing arbitrary >>> objects (not just ODP events)? >> >> The real requirement is use the ring as a sort of container. >> Fixed Size is OK. And the ring should be used to >> store any ODP events, since it is used as a container, >> like vector in C++ STL. >> What if I would like to store objects that are not ODP events in the cuckoo >> hash table? E.g. arbitrary pointers (to memory that is managed in some other >> way). >> > Yes, that is currently ring’s implementation. > > >> >> >>> >>> >>> The scheduler itself could use this since its use of queues is subject to >>> the same issues. >>> >>> On Mon, Dec 7, 2015 at 11:39 PM, HePeng <xnhp0...@icloud.com >>> <mailto:xnhp0...@icloud.com>> wrote: >>> Hi Maxim, >>> I implement a new version of cuckoo hash based on the ODP >>> buffer/pool. >>> >>> As I’ve mentioned earlier, the use of ring in cuckoo hash is like >>> to the use of >>> a container, e.g. a queue in C++ STL. In current ODP implementation, I >>> found that >>> the ODP queue is implemented more likely a facility for transmitting >>> objects, not >>> a container to store objects. Look at the ODP queue enqueue interface: >>> >>> int odp_queue_enq(odp_queue_t queue, odp_event_t ev); >>> >>> the *odp_event_t* is related to the events, but I only want to use >>> odp_queue to >>> storing and retrieving objects, any objects. >>> >>> >>> So I use ODP buffer/pool interfaces instead of ODP queue >>> for the new cuckoo hash implementation. >>> >>> However, compared to the previous implementation based on ring, >>> this version >>> suffers a serious performance degradation. The evaluation is carried out on >>> a Intel >>> servers. I test lookup time for 1000 lookups on a table storing 1 million >>> items. >>> The ODP buffer/pool version suffers at least a 2x performance degradation. >>> >>> This is the buffer/pool version, for 1M insert, and 1000 lookup time: >>> >>> Average insert time = 2.383836, lookup time = 0.000353, >>> >>> This is the ring version. >>> >>> Average insert time = 1.629115, lookup time = 0.000098 >>> >>> This performance degradation stems from the heavy implementation of >>> ODP buffer/pool. In the ring based one, all the key is stored in a big >>> array, and >>> the ring only stores the array indexes of each key. Keys are retrieved >>> using array indexes. >>> In the new one, I use ODP buffer to store the key content. Keys are >>> retrieved by >>> dereferencing a *odp_buffer_t* handle. >>> >>> With this high performance degradation, I suggest moving ring into >>> the odp/api >>> as a container implementation, and use the previous implementation of >>> cuckoo hash. >>> >>> >>> >>> >>> >>> >>> _______________________________________________ >>> lng-odp mailing list >>> lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org> >>> https://lists.linaro.org/mailman/listinfo/lng-odp >>> <https://lists.linaro.org/mailman/listinfo/lng-odp> >>> >>> >>> _______________________________________________ >>> lng-odp mailing list >>> lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org> >>> https://lists.linaro.org/mailman/listinfo/lng-odp >>> <https://lists.linaro.org/mailman/listinfo/lng-odp> >>> >>> >> >> > > _______________________________________________ > lng-odp mailing list > lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org> > https://lists.linaro.org/mailman/listinfo/lng-odp > <https://lists.linaro.org/mailman/listinfo/lng-odp>
_______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp