Project

General

Profile

Bug #14089

Updated by Toomas Soome 2 months ago

gfx_private does read+update on framebuffer memory to draw glyphs and cursor. This does hurt the performance. Instead, update the shadow buffer first and write prepared data from shadow buffer to framebuffer, eliminating reads from WC memory. 

 Testing results (limited tests in sense that I only have one physical host) *with* screen scroll - all the output was done on last line and causing screen scroll by one line: 
 Before patch: 
 <pre> 
 root@beastie:/code/illumos-gate# time cat /etc/passwd >/dev/console 

 real      0m0,458s 
 user      0m0,001s 
 sys       0m0,458s 
 root@beastie:/code/illumos-gate# time cat /etc/passwd >/dev/console 

 real      0m0,459s 
 user      0m0,001s 
 sys       0m0,458s 
 root@beastie:/code/illumos-gate# time cat /etc/passwd >/dev/console 

 real      0m0,459s 
 user      0m0,001s 
 sys       0m0,458s 
 root@beastie:/code/illumos-gate# time cat /etc/passwd >/dev/console 

 real      0m0,459s 
 user      0m0,001s 
 sys       0m0,458s 
 root@beastie:/code/illumos-gate#  
 </pre> 

 After patch: 
 <pre> 
 root@beastie:/home/tsoome# time cat /etc/passwd >/dev/console 

 real      0m0,021s 
 user      0m0,001s 
 sys       0m0,021s 
 root@beastie:/home/tsoome#  
 root@beastie:/home/tsoome# time cat /etc/passwd >/dev/console 

 real      0m0,022s 
 user      0m0,001s 
 sys       0m0,022s 
 root@beastie:/home/tsoome# time cat /etc/passwd >/dev/console 

 real      0m0,023s 
 user      0m0,001s 
 sys       0m0,022s 
 root@beastie:/home/tsoome# 
 </pre> 

 Same test without scroll before patch: 
 <pre> 
 root@beastie:/home/tsoome# time cat /etc/passwd >/dev/console 

 real      0m0,081s 
 user      0m0,001s 
 sys       0m0,080s 
 root@beastie:/home/tsoome# time cat /etc/passwd >/dev/console 

 real      0m0,081s 
 user      0m0,001s 
 sys       0m0,080s 
 root@beastie:/home/tsoome# 
 </pre> 

 And after patch: 
 <pre> 
 root@beastie:/home/tsoome# time cat /etc/passwd >/dev/console 

 real      0m0,005s 
 user      0m0,001s 
 sys       0m0,004s 
 root@beastie:/home/tsoome# time cat /etc/passwd >/dev/console 

 real      0m0,004s 
 user      0m0,001s 
 sys       0m0,004s 
 root@beastie:/home/tsoome# 
 </pre> 

 Tests were performed on 1600x1200x32 framebuffer.

Back