[libvirt] [v7 00/10] Support cache tune in libvirt

Eli Qiao qiaoliyong at gmail.com
Mon Feb 20 09:13:09 UTC 2017



--  
Best regards  
Eli

天涯无处不重逢
a leaf duckweed belongs to the sea, where not to meet in life  

Sent with Sparrow (http://www.sparrowmailapp.com/?sig)


On Monday, 20 February 2017 at 5:07 PM, Martin Kletzander wrote:

> On Mon, Feb 20, 2017 at 04:32:19PM +0800, Eli Qiao wrote:
> >  
> >  
> > --
> > Best regards
> > Eli
> >  
> > 天涯无处不重逢
> > a leaf duckweed belongs to the sea, where not to meet in life
> >  
> > Sent with Sparrow (http://www.sparrowmailapp.com/?sig)
> >  
> >  
> > On Sunday, 19 February 2017 at 10:51 PM, Marcelo Tosatti wrote:
> >  
> > >  
> > > Hi Eli Qiao,
> > >  
> > > Question about removing resctrlfs directories with empty "tasks" file.
> > >  
> > >  
> > > /* This domain is not created by libvirt, so we don't care
> > > * about the tasks, add a fake one to prevent
> > > * virResCtrlRefresh
> > > * remove it from sysfs */
> > > virResCtrlAddTask(p, 1);
> > > virResCtrlAppendDomain(p);
> > >  
> > > /* Refresh all domains', remove the domains which has no task ids.
> > > * This will be used after VM pause, restart, destroy etc.
> > > */
> > > static int
> > > virResCtrlRefresh(void)
> > >  
> > > Why are you doing this (removing directories which have no tasks in
> > > them) ? The code should only read information from other
> > > CAT reservations, not write to them.
> > >  
> >  
> > When a VM get shutdown, their pids will disappear from resctrl’s directory, we can check pids to see if VM get KIlled or not.
> >  
> > The reason why I would like check if tasks file empty is that: there maybe cases that libvirtd not tracking VM’s status, and the VM gone, left a empty directory with no tasks assigned, and cause resource leak.
> >  
> > I think I can refine this later, keep a pointer of ResDomain in VM’s private data and use that to destroy VM’s resctrl directory.
> >  
> > but this won’t work for exception, still resource leak happened.
>  
> Function qemuProcessStop() will *always* be called to cleanup after VMs,
> all exceptions should be taken into account, so don't worry, just do
> proper cleanup.
>  
>  

hi Martin, thanks for your reply, I am thinking if qemu process being killed while libvirtd not running? will qemuProcessStop called in such case?  
>  
> > > This is not for cleanup purposes, since on VM shutdown the resctrlfs
> > > directories are properly removed:
> > >  
> > > /* Remove the Domain from sysfs, this should only success no pids in
> > > * tasks
> > > * of a partition.
> > > */
> > > static
> > > int virResCtrlRemoveDomain(const char *name)
> > > {
> > > char *path = NULL;
> > > int rc = 0;
> > >  
> > > if ((rc = virAsprintf(&path, "%s/%s", RESCTRL_DIR, name)) < 0)
> > > return rc;
> > > rc = rmdir(path);
> > > VIR_FREE(path);
> > > return rc;
> > > }
> > >  
> > > Should not write to other directories 'tasks' file.
> >  
> > Other Apps can have a lock to resctrl before it write tasks to prevent libvirtd remove empty task directory.  

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170220/832e510a/attachment-0001.htm>


More information about the libvir-list mailing list