Date: Thu, 26 Sep 2013 11:18:19 -0400 From: Julien Desfossez <[email protected]>
> When we issue the "snapshot record" command, the consumer takes the current > reading and writing positions in the ring-buffer, > and will only try to consume the data between these boundaries. It will start > at the reading position and consume subbuffer by > subbuffer up to the writing position. Unlike in a normal tracing session, the > reading position is not pushed by the consumer, it is > pushed by the tracer, it corresponds to the last subbuffer not yet reused (or > 0 before the first ring-buffer wrap-up). > If the tracer is quickly filling up subbuffers and we don't have enough > subbuffers (or they are too small) to give us enough time > to extract them, they will be overridden (default mode in snapshot mode) and > we will skip these subbuffers. > So there is no race between the consumer and tracer, we rely on the absolute > position (free-running counter) and we detect > and skip if a subbuffer has been reused. Thanks for these clarifications. It's quite clear that, unless the tracer is quiescent, a snapshot can never be as large as the sum of the sub-buffers. One last point, then: let's suppose the consumer is busy reading records from a certain sub-buffer when the tracer catches up to it and grabs the same sub-buffer. I suppose the consumer is overrun roughshod? Does this happen at the sub-buffer level or when the tracer's position within the sub-buffer catches up to the reader's? The consumer's read operation is interrupted and fails (or does the current read conclude, then the next read request fails?), so it tries to skip ahead to the next sub-buffer. The consumer then keeps skipping until its read position passes the tracer's write position (or it reaches the last "scheduled" sub-buffer). So the snapshot ends up having a series of gaps near its end (assuming the consumer gets to read a few records from each sub-buffer before the tracer kicks it ahead). Right? Daniel U. Thibault Protection des systèmes et contremesures (PSC) | Systems Protection & Countermeasures (SPC) Cyber sécurité pour les missions essentielles (CME) | Mission Critical Cyber Security (MCCS) R & D pour la défense Canada - Valcartier (RDDC Valcartier) | Defence R&D Canada - Valcartier (DRDC Valcartier) 2459 route de la Bravoure Québec QC G3J 1X5 CANADA Vox : (418) 844-4000 x4245 Fax : (418) 844-4538 NAC : 918V QSDJ <http://www.travelgis.com/map.asp?addr=918V%20QSDJ> Gouvernement du Canada | Government of Canada <http://www.valcartier.drdc-rddc.gc.ca/> _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
