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

Thomas Zimmermann tzimmermann at suse.de
Mon Aug 5 10:22:11 UTC 2019


Hi

Am 05.08.19 um 09:02 schrieb Feng Tang:
> Hi Thomas,
> 
> On Sun, Aug 04, 2019 at 08:39:19PM +0200, Thomas Zimmermann wrote:
>> Hi
>>
>> I did some further analysis on this problem and found that the blinking
>> cursor affects performance of the vm-scalability test case.
>>
>> I only have a 4-core machine, so scalability is not really testable. Yet
>> I see the effects of running vm-scalibility against drm-tip, a revert of
>> the mgag200 patch and the vmap fixes that I posted a few days ago.
>>
>> After reverting the mgag200 patch, running the test as described in the
>> report
>>
>>   bin/lkp run job.yaml
>>
>> gives results like
>>
>>   2019-08-02 19:34:37  ./case-anon-cow-seq-hugetlb
>>   2019-08-02 19:34:37  ./usemem --runtime 300 -n 4 --prealloc --prefault
>>     -O -U 815395225
>>   917319627 bytes / 756534 usecs = 1184110 KB/s
>>   917319627 bytes / 764675 usecs = 1171504 KB/s
>>   917319627 bytes / 766414 usecs = 1168846 KB/s
>>   917319627 bytes / 777990 usecs = 1151454 KB/s
>>
>> Running the test against current drm-tip gives slightly worse results,
>> such as.
>>
>>   2019-08-03 19:17:06  ./case-anon-cow-seq-hugetlb
>>   2019-08-03 19:17:06  ./usemem --runtime 300 -n 4 --prealloc --prefault
>>     -O -U 815394406
>>   917318700 bytes / 871607 usecs = 1027778 KB/s
>>   917318700 bytes / 894173 usecs = 1001840 KB/s
>>   917318700 bytes / 919694 usecs = 974040 KB/s
>>   917318700 bytes / 923341 usecs = 970193 KB/s
>>
>> The test puts out roughly one result per second. Strangely sending the
>> output to /dev/null can make results significantly worse.
>>
>>   bin/lkp run job.yaml > /dev/null
>>
>>   2019-08-03 19:23:04  ./case-anon-cow-seq-hugetlb
>>   2019-08-03 19:23:04  ./usemem --runtime 300 -n 4 --prealloc --prefault
>>     -O -U 815394406
>>   917318700 bytes / 1207358 usecs = 741966 KB/s
>>   917318700 bytes / 1210456 usecs = 740067 KB/s
>>   917318700 bytes / 1216572 usecs = 736346 KB/s
>>   917318700 bytes / 1239152 usecs = 722929 KB/s
>>
>> I realized that there's still a blinking cursor on the screen, which I
>> disabled with
>>
>>   tput civis
>>
>> or alternatively
>>
>>   echo 0 > /sys/devices/virtual/graphics/fbcon/cursor_blink
>>
>> Running the the test now gives the original or even better results, such as
>>
>>   bin/lkp run job.yaml > /dev/null
>>
>>   2019-08-03 19:29:17  ./case-anon-cow-seq-hugetlb
>>   2019-08-03 19:29:17  ./usemem --runtime 300 -n 4 --prealloc --prefault
>>     -O -U 815394406
>>   917318700 bytes / 659419 usecs = 1358497 KB/s
>>   917318700 bytes / 659658 usecs = 1358005 KB/s
>>   917318700 bytes / 659916 usecs = 1357474 KB/s
>>   917318700 bytes / 660168 usecs = 1356956 KB/s
>>
>> Rong, Feng, could you confirm this by disabling the cursor or blinking?
> 
> Glad to know this method restored the drop. Rong is running the case.
> 
> While I have another finds, as I noticed your patch changed the bpp from
> 24 to 32, I had a patch to change it back to 24, and run the case in
> the weekend, the -18% regrssion was reduced to about -5%. Could this
> be related?

In the original code, the fbdev console already ran with 32 bpp [1] and
16 bpp was selected for low-end devices. [2][3] The patch only set the
same values for userspace; nothing changed for the console.

Best regards
Thomas

[1]
https://cgit.freedesktop.org/drm/drm-tip/tree/drivers/gpu/drm/mgag200/mgag200_fb.c?id=5d17718997367c435dbe5341a8e270d9b19478d3#n259
[2]
https://cgit.freedesktop.org/drm/drm-tip/tree/drivers/gpu/drm/mgag200/mgag200_fb.c?id=5d17718997367c435dbe5341a8e270d9b19478d3#n263
[3]
https://cgit.freedesktop.org/drm/drm-tip/tree/drivers/gpu/drm/mgag200/mgag200_fb.c?id=5d17718997367c435dbe5341a8e270d9b19478d3#n286

> 
> commit: 
>   f1f8555dfb9 drm/bochs: Use shadow buffer for bochs framebuffer console
>   90f479ae51a drm/mgag200: Replace struct mga_fbdev with generic framebuffer emulation
>   01e75fea0d5 mgag200: restore the depth back to 24
> 
> f1f8555dfb9a70a2 90f479ae51afa45efab97afdde9 01e75fea0d5ff39d3e588c20ec5 
> ---------------- --------------------------- --------------------------- 
>      43921 ±  2%     -18.3%      35884            -4.8%      41826        vm-scalability.median
>   14889337           -17.5%   12291029            -4.1%   14278574        vm-scalability.throughput
>  
> commit 01e75fea0d5ff39d3e588c20ec52e7a4e6588a74
> Author: Feng Tang <feng.tang at intel.com>
> Date:   Fri Aug 2 15:09:19 2019 +0800
> 
>     mgag200: restore the depth back to 24
>     
>     Signed-off-by: Feng Tang <feng.tang at intel.com>
> 
> diff --git a/drivers/gpu/drm/mgag200/mgag200_main.c b/drivers/gpu/drm/mgag200/mgag200_main.c
> index a977333..ac8f6c9 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_main.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_main.c
> @@ -162,7 +162,7 @@ int mgag200_driver_load(struct drm_device *dev, unsigned long flags)
>  	if (IS_G200_SE(mdev) && mdev->mc.vram_size < (2048*1024))
>  		dev->mode_config.preferred_depth = 16;
>  	else
> -		dev->mode_config.preferred_depth = 32;
> +		dev->mode_config.preferred_depth = 24;>  	dev->mode_config.prefer_shadow = 1;
>  
>  	r = mgag200_modeset_init(mdev);
> 
> Thanks,
> Feng
> 
>>
>>
>> The difference between mgag200's original fbdev support and generic
>> fbdev emulation is generic fbdev's worker task that updates the VRAM
>> buffer from the shadow buffer. mgag200 does this immediately, but relies
>> on drm_can_sleep(), which is deprecated.
>>
>> I think that the worker task interferes with the test case, as the
>> worker has been in fbdev emulation since forever and no performance
>> regressions have been reported so far.
>>
>>
>> So unless there's a report where this problem happens in a real-world
>> use case, I'd like to keep code as it is. And apparently there's always
>> the workaround of disabling the cursor blinking.
>>
>> Best regards
>> Thomas
>>

-- 
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)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20190805/11ab9190/attachment.sig>


More information about the dri-devel mailing list