<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On 20 Feb 2014, at 03:23, Glenn Elliott <<a href="mailto:gelliott@cs.unc.edu">gelliott@cs.unc.edu</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html charset=windows-1252"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On Feb 5, 2014, at 4:34 PM, Björn Brandenburg <<a href="mailto:bbb@mpi-sws.org">bbb@mpi-sws.org</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html charset=windows-1252"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On 05 Feb 2014, at 14:23, Glenn Elliott <<a href="mailto:gelliott@cs.unc.edu">gelliott@cs.unc.edu</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">It seems to me that your concerns focus mainly on breaking liblitmus’s API. We can keep the old functions and tag them as deprecated. Under these patches, the clusterSize field would just be ignored.</div></blockquote><div><br></div><div>No, I’m opposed to leaving around deprecated functions. The goal is to reduce the size of the code base that we need to maintain, not to increase it. ;-)</div><br><blockquote type="cite"><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div><br></div><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><blockquote type="cite">Why can’t scheduler just migrate the task automatically? More frustratingly, the plugins silently reject the task in admit_task()—nothing gets printk()’ed.</blockquote><div><br></div><div>It could. I’m happy to merge well-tested patches that do this on a plugin-by-plugin basis. However, I wouldn’t remove this as a general rule. We have some plugins where we’d like to keep enforcing that restriction.</div></div></blockquote><div><br></div><div>I can put together a simple patch that puts a printk() on the failure path.</div></div></blockquote><div><br></div><div>Sounds good, thanks.</div><br><blockquote type="cite"><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div><div>By the way, plugins should not print anything on a *successful* task admission. Systems configured to redirect printk() to the serial port (e.g., our 64-core server that’s hooked up to RAC) can incur ridiculous latencies when talking to the serial port driver. For Felipe's OSPERT”13 paper, we had to remove some printk()s from the non-error-path because the serial port driver gave us interrupt latencies in the millisecond range (when flushing printk()s, it apparently spins with interrupts off, waiting for the other side to ack writes).</div><div><br></div>Thanks,</div><div>Björn</div></div></blockquote></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br></div><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;">I’m flexible with regards to liblitmus API changes/compatibility. The case I am trying to make is that plugins should explicitly report their cluster configurations, rather than leave it up to userspace code (or scripts) to deduce it. The deduction is hard: you have to look at which CPU is release master (if any), look at cache configurations in /sys, examine the clustering configuration in /proc/litmus/plugins/<plugin>/cluster, and understand the inner-workings of the plugin in question. I am proposing the /proc/litmus interface is cleaner and far more foolproof.</span></blockquote></div><div><br></div><div>Well, I wasn’t thinking of providing a general script that can deduce all this. Rather, I usually write per-experiment scripts that just happen to have hardcoded the cluster configurations that I’m using for the paper/that machine. It’s easy to get up and running, and easy to tweak as the need arises. It’s admittedly not a shrink-wrapped, user-friendly way of doing things. Your patches are of course much easier to work with for novices. I’m happy to merge them if you think they’ve been tested enough.</div><div><br></div><div>Thanks,</div><div>Björn</div></div></blockquote></div><div><br></div><br><div>Hi Björn,</div><div><br></div><div>I’m pretty happy with the litmus-rt patch. I went ahead and added another patch to liblitmus/prop/sched-domains to add back the old migration functions. These functions merely wrap the new ones, however. I tested the patches in KVM and ludwig. I think these are ready to be merged into staging, if everyone is in agreement.</div><div><br></div><div>Thanks,</div><div>Glenn</div></div></blockquote><br></div><div>Hi Glenn,</div><div><br></div><div>I’ve merged both the kernel and liblitmus branches into the respective staging branches. I had to do a fair bit of rebasing and also had to resolve some merge conflicts. Could you please make check that I didn’t break anything in the process? It compiles fine on my system, but it would be good if you could take a look and give it a spin.</div><div><br></div><div>Thanks,</div><div>Björn</div><div><br></div></body></html>