Re: [LKP] [drm/mgag200] 90f479ae51: vm-scalability.median -18.8% regression

From: Thomas Zimmermann
Date: Tue Aug 27 2019 - 13:16:56 EST


Hi

Am 27.08.19 um 14:33 schrieb Chen, Rong A:
>
> Both patches have little impact on the performance from our side.

Thanks for testing. Too bad they doesn't solve the issue.

There's another patch attached. Could you please tests this as well?
Thanks a lot!

The patch comes from Daniel Vetter after discussing the problem on IRC.
The idea of the patch is that the old mgag200 code might display much
less frames that the generic code, because mgag200 only prints from
non-atomic context. If we simulate this with the generic code, we should
see roughly the original performance.

Best regards
Thomas

>
> prefetch.patch:
> commit:
> Â f1f8555dfb9 drm/bochs: Use shadow buffer for bochs framebuffer console
> Â 90f479ae51a drm/mgag200: Replace struct mga_fbdev with generic
> framebuffer emulation
> Â 77459f56994 prefetch shadow buffer two lines ahead of blit offset
>
> f1f8555dfb9a70a2Â 90f479ae51afa45efab97afdde 77459f56994ab87ee5459920b3Â
> testcase/testparams/testbox
> ----------------Â -------------------------- --------------------------Â
> ---------------------------
> ÂÂÂÂÂÂÂÂ %stddevÂÂÂÂÂ changeÂÂÂÂÂÂÂÂ %stddevÂÂÂÂÂ change %stddev
> ÂÂÂÂÂÂÂÂÂÂÂÂ \ÂÂÂÂÂÂÂÂÂ |ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ \ÂÂÂÂÂÂÂÂÂ | \
> ÂÂÂÂ 42912ÂÂÂÂÂÂÂÂÂÂÂÂ -15%ÂÂÂÂÂ 36517ÂÂÂÂÂÂÂÂÂÂÂÂ -17% 35515
> vm-scalability/performance-300s-8T-anon-cow-seq-hugetlb/lkp-knm01
> ÂÂÂÂ 42912ÂÂÂÂÂÂÂÂÂÂÂÂ -15%ÂÂÂÂÂ 36517ÂÂÂÂÂÂÂÂÂÂÂÂ -17% 35515ÂÂÂÂÂÂÂ
> GEO-MEAN vm-scalability.median
>
> schedule.patch:
> commit:
> Â f1f8555dfb9 drm/bochs: Use shadow buffer for bochs framebuffer console
> Â 90f479ae51a drm/mgag200: Replace struct mga_fbdev with generic
> framebuffer emulation
> Â ccc5f095c61 schedule dirty worker on local core
>
> f1f8555dfb9a70a2Â 90f479ae51afa45efab97afdde ccc5f095c61ff6eded0f0ab1b7Â
> testcase/testparams/testbox
> ----------------Â -------------------------- --------------------------Â
> ---------------------------
> ÂÂÂÂÂÂÂÂ %stddevÂÂÂÂÂ changeÂÂÂÂÂÂÂÂ %stddevÂÂÂÂÂ change %stddev
> ÂÂÂÂÂÂÂÂÂÂÂÂ \ÂÂÂÂÂÂÂÂÂ |ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ \ÂÂÂÂÂÂÂÂÂ | \
> ÂÂÂÂ 42912ÂÂÂÂÂÂÂÂÂÂÂÂ -15%ÂÂÂÂÂ 36517ÂÂÂÂÂÂÂÂÂÂÂÂ -15%ÂÂÂÂÂ 36556 ÂÂ 4%
> vm-scalability/performance-300s-8T-anon-cow-seq-hugetlb/lkp-knm01
> ÂÂÂÂ 42912ÂÂÂÂÂÂÂÂÂÂÂÂ -15%ÂÂÂÂÂ 36517ÂÂÂÂÂÂÂÂÂÂÂÂ -15% 36556ÂÂÂÂÂÂÂ
> GEO-MEAN vm-scalability.median
>
> Best Regards,
> Rong Chen
> _______________________________________________
> dri-devel mailing list
> dri-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

--
Thomas Zimmermann
Graphics Driver Developer
SUSE Linux GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany
GF: Felix ImendÃrffer, Mary Higgins, Sri Rasiah
HRB 21284 (AG NÃrnberg)
From e6e72031e85e1ad4cbd38fb47f899bab54bf6bdc Mon Sep 17 00:00:00 2001
From: Thomas Zimmermann <tzimmermann@xxxxxxx>
Date: Tue, 27 Aug 2019 19:00:41 +0200
Subject: only schedule worker from non-atomic context

---
drivers/gpu/drm/drm_fb_helper.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
index a7ba5b4902d6..3a3e4784eb28 100644
--- a/drivers/gpu/drm/drm_fb_helper.c
+++ b/drivers/gpu/drm/drm_fb_helper.c
@@ -642,7 +642,8 @@ static void drm_fb_helper_dirty(struct fb_info *info, u32 x, u32 y,
clip->y2 = max_t(u32, clip->y2, y + height);
spin_unlock_irqrestore(&helper->dirty_lock, flags);

- schedule_work(&helper->dirty_work);
+ if (drm_can_sleep())
+ schedule_work(&helper->dirty_work);
}

/**
--
2.22.0

Attachment: signature.asc
Description: OpenPGP digital signature