From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.14.3/8.14.3/SuSE Linux 0.8) with ESMTP id p5271gaY180519 for ; Thu, 2 Jun 2011 02:01:42 -0500 Received: from ipmail06.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A69D44963BE for ; Thu, 2 Jun 2011 00:01:40 -0700 (PDT) Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id skQyoF9FLaF1r6Cn for ; Thu, 02 Jun 2011 00:01:40 -0700 (PDT) From: Dave Chinner Subject: [PATCH 01/12] vmscan: add shrink_slab tracepoints Date: Thu, 2 Jun 2011 17:00:56 +1000 Message-Id: <1306998067-27659-2-git-send-email-david@fromorbit.com> In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 List-Id: XFS Filesystem from SGI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: xfs-bounces@oss.sgi.com Errors-To: xfs-bounces@oss.sgi.com To: linux-fsdevel@vger.kernel.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com RnJvbTogRGF2ZSBDaGlubmVyIDxkY2hpbm5lckByZWRoYXQuY29tPgoK0IZ0IGlzIGltcG9zc2li bGUgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZSBzaHJpbmtlcnMgYXJlIGFjdHVhbGx5IGRvaW5nCndp dGhvdXQgaW5zdHJ1bWVudGluZyB0aGUgY29kZSwgc28gYWRkIGEgc29tZSB0cmFjZXBvaW50cyB0 byBhbGxvdwppbnNpZ2h0IHRvIGJlIGdhaW5lZC4KClNpZ25lZC1vZmYtYnk6IERhdmUgQ2hpbm5l ciA8ZGNoaW5uZXJAcmVkaGF0LmNvbT4KLS0tCiBpbmNsdWRlL3RyYWNlL2V2ZW50cy92bXNjYW4u aCB8ICAgNjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIG1tL3Zt c2Nhbi5jICAgICAgICAgICAgICAgICAgIHwgICAgNiArKystCiAyIGZpbGVzIGNoYW5nZWQsIDcy IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFj ZS9ldmVudHMvdm1zY2FuLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy92bXNjYW4uaAppbmRleCBl YTQyMmFhLi5jNzk4Y2Q3IDEwMDY0NAotLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy92bXNjYW4u aAorKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy92bXNjYW4uaApAQCAtMzEwLDYgKzMxMCw3MyBA QCBUUkFDRV9FVkVOVChtbV92bXNjYW5fbHJ1X3Nocmlua19pbmFjdGl2ZSwKIAkJc2hvd19yZWNs YWltX2ZsYWdzKF9fZW50cnktPnJlY2xhaW1fZmxhZ3MpKQogKTsKIAorVFJBQ0VfRVZFTlQobW1f c2hyaW5rX3NsYWJfc3RhcnQsCisJVFBfUFJPVE8oc3RydWN0IHNocmlua2VyICpzaHIsIHN0cnVj dCBzaHJpbmtfY29udHJvbCAqc2MsCisJCXVuc2lnbmVkIGxvbmcgcGdzX3NjYW5uZWQsIHVuc2ln bmVkIGxvbmcgbHJ1X3BncywKKwkJdW5zaWduZWQgbG9uZyBjYWNoZV9pdGVtcywgdW5zaWduZWQg bG9uZyBsb25nIGRlbHRhLAorCQl1bnNpZ25lZCBsb25nIHRvdGFsX3NjYW4pLAorCisJVFBfQVJH UyhzaHIsIHNjLCBwZ3Nfc2Nhbm5lZCwgbHJ1X3BncywgY2FjaGVfaXRlbXMsIGRlbHRhLCB0b3Rh bF9zY2FuKSwKKworCVRQX1NUUlVDVF9fZW50cnkoCisJCV9fZmllbGQoc3RydWN0IHNocmlua2Vy ICosIHNocikKKwkJX19maWVsZChsb25nLCBzaHJfbnIpCisJCV9fZmllbGQoZ2ZwX3QsIGdmcF9m bGFncykKKwkJX19maWVsZCh1bnNpZ25lZCBsb25nLCBwZ3Nfc2Nhbm5lZCkKKwkJX19maWVsZCh1 bnNpZ25lZCBsb25nLCBscnVfcGdzKQorCQlfX2ZpZWxkKHVuc2lnbmVkIGxvbmcsIGNhY2hlX2l0 ZW1zKQorCQlfX2ZpZWxkKHVuc2lnbmVkIGxvbmcgbG9uZywgZGVsdGEpCisJCV9fZmllbGQodW5z aWduZWQgbG9uZywgdG90YWxfc2NhbikKKwkpLAorCisJVFBfZmFzdF9hc3NpZ24oCisJCV9fZW50 cnktPnNociA9IHNocjsKKwkJX19lbnRyeS0+c2hyX25yID0gc2hyLT5ucjsKKwkJX19lbnRyeS0+ Z2ZwX2ZsYWdzID0gc2MtPmdmcF9tYXNrOworCQlfX2VudHJ5LT5wZ3Nfc2Nhbm5lZCA9IHBnc19z Y2FubmVkOworCQlfX2VudHJ5LT5scnVfcGdzID0gbHJ1X3BnczsKKwkJX19lbnRyeS0+Y2FjaGVf aXRlbXMgPSBjYWNoZV9pdGVtczsKKwkJX19lbnRyeS0+ZGVsdGEgPSBkZWx0YTsKKwkJX19lbnRy eS0+dG90YWxfc2NhbiA9IHRvdGFsX3NjYW47CisJKSwKKworCVRQX3ByaW50aygic2hyaW5rZXIg JXA6IG5yICVsZCBnZnBfZmxhZ3MgJXMgcGdzX3NjYW5uZWQgJWxkIGxydV9wZ3MgJWxkIGNhY2hl IGl0ZW1zICVsZCBkZWx0YSAlbGxkIHRvdGFsX3NjYW4gJWxkIiwKKwkJX19lbnRyeS0+c2hyLAor CQlfX2VudHJ5LT5zaHJfbnIsCisJCXNob3dfZ2ZwX2ZsYWdzKF9fZW50cnktPmdmcF9mbGFncyks CisJCV9fZW50cnktPnBnc19zY2FubmVkLAorCQlfX2VudHJ5LT5scnVfcGdzLAorCQlfX2VudHJ5 LT5jYWNoZV9pdGVtcywKKwkJX19lbnRyeS0+ZGVsdGEsCisJCV9fZW50cnktPnRvdGFsX3NjYW4p CispOworCitUUkFDRV9FVkVOVChtbV9zaHJpbmtfc2xhYl9lbmQsCisJVFBfUFJPVE8oc3RydWN0 IHNocmlua2VyICpzaHIsIGludCBzaHJpbmtlcl9yZXQsCisJCXVuc2lnbmVkIGxvbmcgdG90YWxf c2NhbiksCisKKwlUUF9BUkdTKHNociwgc2hyaW5rZXJfcmV0LCB0b3RhbF9zY2FuKSwKKworCVRQ X1NUUlVDVF9fZW50cnkoCisJCV9fZmllbGQoc3RydWN0IHNocmlua2VyICosIHNocikKKwkJX19m aWVsZChsb25nLCBzaHJfbnIpCisJCV9fZmllbGQoaW50LCBzaHJpbmtlcl9yZXQpCisJCV9fZmll bGQodW5zaWduZWQgbG9uZywgdG90YWxfc2NhbikKKwkpLAorCisJVFBfZmFzdF9hc3NpZ24oCisJ CV9fZW50cnktPnNociA9IHNocjsKKwkJX19lbnRyeS0+c2hyX25yID0gc2hyLT5ucjsKKwkJX19l bnRyeS0+c2hyaW5rZXJfcmV0ID0gc2hyaW5rZXJfcmV0OworCQlfX2VudHJ5LT50b3RhbF9zY2Fu ID0gdG90YWxfc2NhbjsKKwkpLAorCisJVFBfcHJpbnRrKCJzaHJpbmtlciAlcDogbnIgJWxkIHRv dGFsX3NjYW4gJWxkIHJldHVybiB2YWwgJWQiLAorCQlfX2VudHJ5LT5zaHIsCisJCV9fZW50cnkt PnNocl9uciwKKwkJX19lbnRyeS0+dG90YWxfc2NhbiwKKwkJX19lbnRyeS0+c2hyaW5rZXJfcmV0 KQorKTsKIAogI2VuZGlmIC8qIF9UUkFDRV9WTVNDQU5fSCAqLwogCmRpZmYgLS1naXQgYS9tbS92 bXNjYW4uYyBiL21tL3Ztc2Nhbi5jCmluZGV4IGZhYTBhMDguLjQ4ZTNmYmQgMTAwNjQ0Ci0tLSBh L21tL3Ztc2Nhbi5jCisrKyBiL21tL3Ztc2Nhbi5jCkBAIC0yNTAsNiArMjUwLDcgQEAgdW5zaWdu ZWQgbG9uZyBzaHJpbmtfc2xhYihzdHJ1Y3Qgc2hyaW5rX2NvbnRyb2wgKnNocmluaywKIAkJdW5z aWduZWQgbG9uZyBsb25nIGRlbHRhOwogCQl1bnNpZ25lZCBsb25nIHRvdGFsX3NjYW47CiAJCXVu c2lnbmVkIGxvbmcgbWF4X3Bhc3M7CisJCWludCBzaHJpbmtfcmV0ID0gMDsKIAogCQltYXhfcGFz cyA9IGRvX3Nocmlua2VyX3NocmluayhzaHJpbmtlciwgc2hyaW5rLCAwKTsKIAkJZGVsdGEgPSAo NCAqIG5yX3BhZ2VzX3NjYW5uZWQpIC8gc2hyaW5rZXItPnNlZWtzOwpAQCAtMjc0LDkgKzI3NSwx MSBAQCB1bnNpZ25lZCBsb25nIHNocmlua19zbGFiKHN0cnVjdCBzaHJpbmtfY29udHJvbCAqc2hy aW5rLAogCQl0b3RhbF9zY2FuID0gc2hyaW5rZXItPm5yOwogCQlzaHJpbmtlci0+bnIgPSAwOwog CisJCXRyYWNlX21tX3Nocmlua19zbGFiX3N0YXJ0KHNocmlua2VyLCBzaHJpbmssIG5yX3BhZ2Vz X3NjYW5uZWQsCisJCQkJCWxydV9wYWdlcywgbWF4X3Bhc3MsIGRlbHRhLCB0b3RhbF9zY2FuKTsK KwogCQl3aGlsZSAodG90YWxfc2NhbiA+PSBTSFJJTktfQkFUQ0gpIHsKIAkJCWxvbmcgdGhpc19z Y2FuID0gU0hSSU5LX0JBVENIOwotCQkJaW50IHNocmlua19yZXQ7CiAJCQlpbnQgbnJfYmVmb3Jl OwogCiAJCQlucl9iZWZvcmUgPSBkb19zaHJpbmtlcl9zaHJpbmsoc2hyaW5rZXIsIHNocmluaywg MCk7CkBAIC0yOTMsNiArMjk2LDcgQEAgdW5zaWduZWQgbG9uZyBzaHJpbmtfc2xhYihzdHJ1Y3Qg c2hyaW5rX2NvbnRyb2wgKnNocmluaywKIAkJfQogCiAJCXNocmlua2VyLT5uciArPSB0b3RhbF9z Y2FuOworCQl0cmFjZV9tbV9zaHJpbmtfc2xhYl9lbmQoc2hyaW5rZXIsIHNocmlua19yZXQsIHRv dGFsX3NjYW4pOwogCX0KIAl1cF9yZWFkKCZzaHJpbmtlcl9yd3NlbSk7CiBvdXQ6Ci0tIAoxLjcu NS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp4ZnMg bWFpbGluZyBsaXN0Cnhmc0Bvc3Muc2dpLmNvbQpodHRwOi8vb3NzLnNnaS5jb20vbWFpbG1hbi9s aXN0aW5mby94ZnMK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933006Ab1FBHBp (ORCPT ); Thu, 2 Jun 2011 03:01:45 -0400 Received: from ipmail06.adl2.internode.on.net ([150.101.137.129]:27315 "EHLO ipmail06.adl2.internode.on.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932956Ab1FBHBl (ORCPT ); Thu, 2 Jun 2011 03:01:41 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArYDAAky5015LCoegWdsb2JhbABThEmhZxUBARYmJbZukGKBK4NsgQoEmDKHdw From: Dave Chinner To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com Subject: [PATCH 01/12] vmscan: add shrink_slab tracepoints Date: Thu, 2 Jun 2011 17:00:56 +1000 Message-Id: <1306998067-27659-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Dave Chinner Іt is impossible to understand what the shrinkers are actually doing without instrumenting the code, so add a some tracepoints to allow insight to be gained. Signed-off-by: Dave Chinner --- include/trace/events/vmscan.h | 67 +++++++++++++++++++++++++++++++++++++++++ mm/vmscan.c | 6 +++- 2 files changed, 72 insertions(+), 1 deletions(-) diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.h index ea422aa..c798cd7 100644 --- a/include/trace/events/vmscan.h +++ b/include/trace/events/vmscan.h @@ -310,6 +310,73 @@ TRACE_EVENT(mm_vmscan_lru_shrink_inactive, show_reclaim_flags(__entry->reclaim_flags)) ); +TRACE_EVENT(mm_shrink_slab_start, + TP_PROTO(struct shrinker *shr, struct shrink_control *sc, + unsigned long pgs_scanned, unsigned long lru_pgs, + unsigned long cache_items, unsigned long long delta, + unsigned long total_scan), + + TP_ARGS(shr, sc, pgs_scanned, lru_pgs, cache_items, delta, total_scan), + + TP_STRUCT__entry( + __field(struct shrinker *, shr) + __field(long, shr_nr) + __field(gfp_t, gfp_flags) + __field(unsigned long, pgs_scanned) + __field(unsigned long, lru_pgs) + __field(unsigned long, cache_items) + __field(unsigned long long, delta) + __field(unsigned long, total_scan) + ), + + TP_fast_assign( + __entry->shr = shr; + __entry->shr_nr = shr->nr; + __entry->gfp_flags = sc->gfp_mask; + __entry->pgs_scanned = pgs_scanned; + __entry->lru_pgs = lru_pgs; + __entry->cache_items = cache_items; + __entry->delta = delta; + __entry->total_scan = total_scan; + ), + + TP_printk("shrinker %p: nr %ld gfp_flags %s pgs_scanned %ld lru_pgs %ld cache items %ld delta %lld total_scan %ld", + __entry->shr, + __entry->shr_nr, + show_gfp_flags(__entry->gfp_flags), + __entry->pgs_scanned, + __entry->lru_pgs, + __entry->cache_items, + __entry->delta, + __entry->total_scan) +); + +TRACE_EVENT(mm_shrink_slab_end, + TP_PROTO(struct shrinker *shr, int shrinker_ret, + unsigned long total_scan), + + TP_ARGS(shr, shrinker_ret, total_scan), + + TP_STRUCT__entry( + __field(struct shrinker *, shr) + __field(long, shr_nr) + __field(int, shrinker_ret) + __field(unsigned long, total_scan) + ), + + TP_fast_assign( + __entry->shr = shr; + __entry->shr_nr = shr->nr; + __entry->shrinker_ret = shrinker_ret; + __entry->total_scan = total_scan; + ), + + TP_printk("shrinker %p: nr %ld total_scan %ld return val %d", + __entry->shr, + __entry->shr_nr, + __entry->total_scan, + __entry->shrinker_ret) +); #endif /* _TRACE_VMSCAN_H */ diff --git a/mm/vmscan.c b/mm/vmscan.c index faa0a08..48e3fbd 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -250,6 +250,7 @@ unsigned long shrink_slab(struct shrink_control *shrink, unsigned long long delta; unsigned long total_scan; unsigned long max_pass; + int shrink_ret = 0; max_pass = do_shrinker_shrink(shrinker, shrink, 0); delta = (4 * nr_pages_scanned) / shrinker->seeks; @@ -274,9 +275,11 @@ unsigned long shrink_slab(struct shrink_control *shrink, total_scan = shrinker->nr; shrinker->nr = 0; + trace_mm_shrink_slab_start(shrinker, shrink, nr_pages_scanned, + lru_pages, max_pass, delta, total_scan); + while (total_scan >= SHRINK_BATCH) { long this_scan = SHRINK_BATCH; - int shrink_ret; int nr_before; nr_before = do_shrinker_shrink(shrinker, shrink, 0); @@ -293,6 +296,7 @@ unsigned long shrink_slab(struct shrink_control *shrink, } shrinker->nr += total_scan; + trace_mm_shrink_slab_end(shrinker, shrink_ret, total_scan); } up_read(&shrinker_rwsem); out: -- 1.7.5.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Chinner Subject: [PATCH 01/12] vmscan: add shrink_slab tracepoints Date: Thu, 2 Jun 2011 17:00:56 +1000 Message-ID: <1306998067-27659-2-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com To: linux-fsdevel@vger.kernel.org Return-path: In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> Sender: owner-linux-mm@kvack.org List-Id: linux-fsdevel.vger.kernel.org From: Dave Chinner =D0=86t is impossible to understand what the shrinkers are actually doing without instrumenting the code, so add a some tracepoints to allow insight to be gained. Signed-off-by: Dave Chinner --- include/trace/events/vmscan.h | 67 +++++++++++++++++++++++++++++++++++= ++++++ mm/vmscan.c | 6 +++- 2 files changed, 72 insertions(+), 1 deletions(-) diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.= h index ea422aa..c798cd7 100644 --- a/include/trace/events/vmscan.h +++ b/include/trace/events/vmscan.h @@ -310,6 +310,73 @@ TRACE_EVENT(mm_vmscan_lru_shrink_inactive, show_reclaim_flags(__entry->reclaim_flags)) ); =20 +TRACE_EVENT(mm_shrink_slab_start, + TP_PROTO(struct shrinker *shr, struct shrink_control *sc, + unsigned long pgs_scanned, unsigned long lru_pgs, + unsigned long cache_items, unsigned long long delta, + unsigned long total_scan), + + TP_ARGS(shr, sc, pgs_scanned, lru_pgs, cache_items, delta, total_scan), + + TP_STRUCT__entry( + __field(struct shrinker *, shr) + __field(long, shr_nr) + __field(gfp_t, gfp_flags) + __field(unsigned long, pgs_scanned) + __field(unsigned long, lru_pgs) + __field(unsigned long, cache_items) + __field(unsigned long long, delta) + __field(unsigned long, total_scan) + ), + + TP_fast_assign( + __entry->shr =3D shr; + __entry->shr_nr =3D shr->nr; + __entry->gfp_flags =3D sc->gfp_mask; + __entry->pgs_scanned =3D pgs_scanned; + __entry->lru_pgs =3D lru_pgs; + __entry->cache_items =3D cache_items; + __entry->delta =3D delta; + __entry->total_scan =3D total_scan; + ), + + TP_printk("shrinker %p: nr %ld gfp_flags %s pgs_scanned %ld lru_pgs %ld= cache items %ld delta %lld total_scan %ld", + __entry->shr, + __entry->shr_nr, + show_gfp_flags(__entry->gfp_flags), + __entry->pgs_scanned, + __entry->lru_pgs, + __entry->cache_items, + __entry->delta, + __entry->total_scan) +); + +TRACE_EVENT(mm_shrink_slab_end, + TP_PROTO(struct shrinker *shr, int shrinker_ret, + unsigned long total_scan), + + TP_ARGS(shr, shrinker_ret, total_scan), + + TP_STRUCT__entry( + __field(struct shrinker *, shr) + __field(long, shr_nr) + __field(int, shrinker_ret) + __field(unsigned long, total_scan) + ), + + TP_fast_assign( + __entry->shr =3D shr; + __entry->shr_nr =3D shr->nr; + __entry->shrinker_ret =3D shrinker_ret; + __entry->total_scan =3D total_scan; + ), + + TP_printk("shrinker %p: nr %ld total_scan %ld return val %d", + __entry->shr, + __entry->shr_nr, + __entry->total_scan, + __entry->shrinker_ret) +); =20 #endif /* _TRACE_VMSCAN_H */ =20 diff --git a/mm/vmscan.c b/mm/vmscan.c index faa0a08..48e3fbd 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -250,6 +250,7 @@ unsigned long shrink_slab(struct shrink_control *shri= nk, unsigned long long delta; unsigned long total_scan; unsigned long max_pass; + int shrink_ret =3D 0; =20 max_pass =3D do_shrinker_shrink(shrinker, shrink, 0); delta =3D (4 * nr_pages_scanned) / shrinker->seeks; @@ -274,9 +275,11 @@ unsigned long shrink_slab(struct shrink_control *shr= ink, total_scan =3D shrinker->nr; shrinker->nr =3D 0; =20 + trace_mm_shrink_slab_start(shrinker, shrink, nr_pages_scanned, + lru_pages, max_pass, delta, total_scan); + while (total_scan >=3D SHRINK_BATCH) { long this_scan =3D SHRINK_BATCH; - int shrink_ret; int nr_before; =20 nr_before =3D do_shrinker_shrink(shrinker, shrink, 0); @@ -293,6 +296,7 @@ unsigned long shrink_slab(struct shrink_control *shri= nk, } =20 shrinker->nr +=3D total_scan; + trace_mm_shrink_slab_end(shrinker, shrink_ret, total_scan); } up_read(&shrinker_rwsem); out: --=20 1.7.5.1 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter= .ca/ Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail137.messagelabs.com (mail137.messagelabs.com [216.82.249.19]) by kanga.kvack.org (Postfix) with SMTP id D4FA86B007B for ; Thu, 2 Jun 2011 03:01:42 -0400 (EDT) From: Dave Chinner Subject: [PATCH 01/12] vmscan: add shrink_slab tracepoints Date: Thu, 2 Jun 2011 17:00:56 +1000 Message-Id: <1306998067-27659-2-git-send-email-david@fromorbit.com> In-Reply-To: <1306998067-27659-1-git-send-email-david@fromorbit.com> References: <1306998067-27659-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: owner-linux-mm@kvack.org List-ID: To: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, xfs@oss.sgi.com From: Dave Chinner D?t is impossible to understand what the shrinkers are actually doing without instrumenting the code, so add a some tracepoints to allow insight to be gained. Signed-off-by: Dave Chinner --- include/trace/events/vmscan.h | 67 +++++++++++++++++++++++++++++++++++++++++ mm/vmscan.c | 6 +++- 2 files changed, 72 insertions(+), 1 deletions(-) diff --git a/include/trace/events/vmscan.h b/include/trace/events/vmscan.h index ea422aa..c798cd7 100644 --- a/include/trace/events/vmscan.h +++ b/include/trace/events/vmscan.h @@ -310,6 +310,73 @@ TRACE_EVENT(mm_vmscan_lru_shrink_inactive, show_reclaim_flags(__entry->reclaim_flags)) ); +TRACE_EVENT(mm_shrink_slab_start, + TP_PROTO(struct shrinker *shr, struct shrink_control *sc, + unsigned long pgs_scanned, unsigned long lru_pgs, + unsigned long cache_items, unsigned long long delta, + unsigned long total_scan), + + TP_ARGS(shr, sc, pgs_scanned, lru_pgs, cache_items, delta, total_scan), + + TP_STRUCT__entry( + __field(struct shrinker *, shr) + __field(long, shr_nr) + __field(gfp_t, gfp_flags) + __field(unsigned long, pgs_scanned) + __field(unsigned long, lru_pgs) + __field(unsigned long, cache_items) + __field(unsigned long long, delta) + __field(unsigned long, total_scan) + ), + + TP_fast_assign( + __entry->shr = shr; + __entry->shr_nr = shr->nr; + __entry->gfp_flags = sc->gfp_mask; + __entry->pgs_scanned = pgs_scanned; + __entry->lru_pgs = lru_pgs; + __entry->cache_items = cache_items; + __entry->delta = delta; + __entry->total_scan = total_scan; + ), + + TP_printk("shrinker %p: nr %ld gfp_flags %s pgs_scanned %ld lru_pgs %ld cache items %ld delta %lld total_scan %ld", + __entry->shr, + __entry->shr_nr, + show_gfp_flags(__entry->gfp_flags), + __entry->pgs_scanned, + __entry->lru_pgs, + __entry->cache_items, + __entry->delta, + __entry->total_scan) +); + +TRACE_EVENT(mm_shrink_slab_end, + TP_PROTO(struct shrinker *shr, int shrinker_ret, + unsigned long total_scan), + + TP_ARGS(shr, shrinker_ret, total_scan), + + TP_STRUCT__entry( + __field(struct shrinker *, shr) + __field(long, shr_nr) + __field(int, shrinker_ret) + __field(unsigned long, total_scan) + ), + + TP_fast_assign( + __entry->shr = shr; + __entry->shr_nr = shr->nr; + __entry->shrinker_ret = shrinker_ret; + __entry->total_scan = total_scan; + ), + + TP_printk("shrinker %p: nr %ld total_scan %ld return val %d", + __entry->shr, + __entry->shr_nr, + __entry->total_scan, + __entry->shrinker_ret) +); #endif /* _TRACE_VMSCAN_H */ diff --git a/mm/vmscan.c b/mm/vmscan.c index faa0a08..48e3fbd 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -250,6 +250,7 @@ unsigned long shrink_slab(struct shrink_control *shrink, unsigned long long delta; unsigned long total_scan; unsigned long max_pass; + int shrink_ret = 0; max_pass = do_shrinker_shrink(shrinker, shrink, 0); delta = (4 * nr_pages_scanned) / shrinker->seeks; @@ -274,9 +275,11 @@ unsigned long shrink_slab(struct shrink_control *shrink, total_scan = shrinker->nr; shrinker->nr = 0; + trace_mm_shrink_slab_start(shrinker, shrink, nr_pages_scanned, + lru_pages, max_pass, delta, total_scan); + while (total_scan >= SHRINK_BATCH) { long this_scan = SHRINK_BATCH; - int shrink_ret; int nr_before; nr_before = do_shrinker_shrink(shrinker, shrink, 0); @@ -293,6 +296,7 @@ unsigned long shrink_slab(struct shrink_control *shrink, } shrinker->nr += total_scan; + trace_mm_shrink_slab_end(shrinker, shrink_ret, total_scan); } up_read(&shrinker_rwsem); out: -- 1.7.5.1 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: email@kvack.org