On 10/03/2012 07:51 PM, Andrea Arcangeli wrote:
+/* + * In this function we build a temporal CPU_node<->page relation by + * using a two-stage autonuma_last_nid filter to remove short/unlikely + * relations. + * + * Using P(p) ~ n_p / n_t as per frequentest probability, we can + * equate a node's CPU usage of a particular page (n_p) per total + * usage of this page (n_t) (in a given time-span) to a probability. + * + * Our periodic faults will then sample this probability and getting + * the same result twice in a row, given these samples are fully + * independent, is then given by P(n)^2, provided our sample period + * is sufficiently short compared to the usage pattern. + * + * This quadric squishes small probabilities, making it less likely + * we act on an unlikely CPU_node<->page relation. + */ +static inline bool last_nid_set(struct page *page, int this_nid) +{
Could be nice to rename this function to should_migrate_page()...
+ bool ret = true; + int autonuma_last_nid = ACCESS_ONCE(page->autonuma_last_nid); + VM_BUG_ON(this_nid < 0); + VM_BUG_ON(this_nid >= MAX_NUMNODES); + if (autonuma_last_nid != this_nid) { + if (autonuma_last_nid >= 0) + ret = false; + ACCESS_ONCE(page->autonuma_last_nid) = this_nid; + } + return ret; +}
-- All rights reversed -- 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>