On Wed, Jul 12, 2017 at 09:56:17AM +0200, Peter Zijlstra wrote: > On Wed, Jul 12, 2017 at 11:00:53AM +0900, Byungchul Park wrote: > > On Tue, Jul 11, 2017 at 06:12:32PM +0200, Peter Zijlstra wrote: > > > > Right, like I wrote in the comment; I don't think you need quite this > > > much. > > > > > > The problem only happens if you rewind more than MAX_XHLOCKS_NR; > > > although I realize it can be an accumulative rewind, which makes it > > > slightly more tricky. > > > > > > We can either make the rewind more expensive and make xhlock_valid() > > > false for each rewound entry; or we can keep the max_idx and account > > > > Does max_idx mean the 'original position - 1'? > > orig_idx = current->hist_idx; > current->hist_idx++; > if ((int)(current->hist_idx - orig_idx) > 0) > current->hist_idx_max = current->hist_idx; > > > I've forgotten if the idx points to the most recent entry or beyond it. > > Given the circular nature, and tail being one ahead of head, the max > effectively tracks the tail (I suppose we can also do an explicit tail > tracking, but that might end up more difficult). > > This allows rewinds of less than array_size() while still maintaining a > correct tail. > > Only once we (cummulative or not) rewind past the tail -- iow, loose the > _entire_ history, do we need to do something drastic. I am sorry but I don't understand why we have to do the drastic work. Does my approach have problems, rewinding to 'original idx' on exit and deciding whether overwrite or not? I think, this way, no need to do the drastic work. Or.. does my one get more overhead in usual case? > > > > from there. If we rewind >= MAX_XHLOCKS_NR from the max_idx we need to > > > invalidate the entire state, which we can do by invaliding > > > > Could you explain what the entire state is? > > All hist_lock[]. Did the above help? > > > > xhlock_valid() or by re-introduction of the hist_gen_id. When we > > > > What does the re-introduction of the hist_gen_id mean? > > What you used to call work_id or something like that. A generation count > for the hist_lock[]. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>