Re: [PATCH v2] parallels: add block device statistics to driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 04.06.2015 14:45, Nikolay Shirokovskiy wrote:
> Statistics provided through PCS SDK. As we have only async interface in SDK we
> need to be subscribed to statistics in order to get it. Trivial solution on
> every stat request to subscribe, wait event and then unsubscribe will lead to
> significant delays in case of a number of successive requests, as the event
> will be delivered on next PCS server notify cycle. On the other hand we don't
> want to keep unnesessary subscribtion. So we take an hibrid solution to
> subcsribe on first request and then keep a subscription while requests are
> active. We populate cache of statistics on subscribtion events and use this
> cache to serve libvirts requests.
> 
>  * Cache details.
> Cache is just handle to last arrived event, we call this cache
> as if this handle is valid it is used to serve synchronous
> statistics requests. We use number of successive events count
> to detect that user lost interest to statistics. We reset this
> count to 0 on every request. If more than PARALLELS_STATISTICS_DROP_COUNT
> successive events arrive we unsubscribe. Special value of -1
> of this counter is used to differentiate between subscribed/unsubscribed state
> to protect from delayed events.
> 
> Values of RALLELS_STATISTICS_DROP_COUNT and PARALLELS_STATISTICS_TIMEOUT are
> just drop-ins, choosen without special consideration.
> 
>  * Thread safety issues
> Use parallelsDomObjFromDomainRef in parallelsDomainBlockStats as
> we could wait on domain lock down on stack in prlsdkGetStatsParam
> and if we won't keep reference we could get dangling pointer
> on return from wait.
> 
> Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@xxxxxxxxxxxxx>
> ---
>  src/parallels/parallels_driver.c |  106 ++++++++++++++++++++++
>  src/parallels/parallels_sdk.c    |  183 ++++++++++++++++++++++++++++++++++++++
>  src/parallels/parallels_sdk.h    |    2 +
>  src/parallels/parallels_utils.c  |   28 ++++++
>  src/parallels/parallels_utils.h  |   18 ++++
>  5 files changed, 337 insertions(+), 0 deletions(-)
> 
Need more checks in case of unsuccessful unsubscribe, will resend.

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]