mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	Rewrite fHits() in arc_summary.py with SI units
Complete rewrite of fHits(). Move units from non-standard English abbreviations to SI units, thereby avoiding confusion because of "long scale" and "short scale" numbers. Remove unused parameter "Decimal". Add function string. Aim to confirm to PEP8. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: George Melikov <mail@gmelikov.ru> Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov> Signed-off-by: Scot W. Stevenson <scot.stevenson@gmail.com> Closes #6815
This commit is contained in:
		
							parent
							
								
									03f638a8ef
								
							
						
					
					
						commit
						88e4e0d5dd
					
				| @ -111,36 +111,40 @@ def fBytes(b=0): | ||||
|     return result | ||||
| 
 | ||||
| 
 | ||||
| def fHits(Hits=0, Decimal=2): | ||||
|     khits = (10 ** 3) | ||||
|     mhits = (10 ** 6) | ||||
|     bhits = (10 ** 9) | ||||
|     thits = (10 ** 12) | ||||
|     qhits = (10 ** 15) | ||||
|     Qhits = (10 ** 18) | ||||
|     shits = (10 ** 21) | ||||
|     Shits = (10 ** 24) | ||||
| def fHits(hits=0): | ||||
|     """Create a human-readable representation of the number of hits. | ||||
|     The single-letter symbols used are SI to avoid the confusion caused | ||||
|     by the different "short scale" and "long scale" representations in | ||||
|     English, which use the same words for different values. See | ||||
|     https://en.wikipedia.org/wiki/Names_of_large_numbers and | ||||
|     https://physics.nist.gov/cuu/Units/prefixes.html | ||||
|     """ | ||||
| 
 | ||||
|     numbers = [ | ||||
|             [10**24, 'Y'],  # yotta (septillion) | ||||
|             [10**21, 'Z'],  # zetta (sextillion) | ||||
|             [10**18, 'E'],  # exa   (quintrillion) | ||||
|             [10**15, 'P'],  # peta  (quadrillion) | ||||
|             [10**12, 'T'],  # tera  (trillion) | ||||
|             [10**9, 'G'],   # giga  (billion) | ||||
|             [10**6, 'M'],   # mega  (million) | ||||
|             [10**3, 'k']]   # kilo  (thousand) | ||||
| 
 | ||||
|     if hits >= 1000: | ||||
| 
 | ||||
|         for limit, symbol in numbers: | ||||
| 
 | ||||
|             if hits >= limit: | ||||
|                 value = hits/limit | ||||
|                 break | ||||
| 
 | ||||
|         result = "%0.2f%s" % (value, symbol) | ||||
| 
 | ||||
|     if Hits >= Shits: | ||||
|         return str("%0." + str(Decimal) + "f") % (Hits / Shits) + "S" | ||||
|     elif Hits >= shits: | ||||
|         return str("%0." + str(Decimal) + "f") % (Hits / shits) + "s" | ||||
|     elif Hits >= Qhits: | ||||
|         return str("%0." + str(Decimal) + "f") % (Hits / Qhits) + "Q" | ||||
|     elif Hits >= qhits: | ||||
|         return str("%0." + str(Decimal) + "f") % (Hits / qhits) + "q" | ||||
|     elif Hits >= thits: | ||||
|         return str("%0." + str(Decimal) + "f") % (Hits / thits) + "t" | ||||
|     elif Hits >= bhits: | ||||
|         return str("%0." + str(Decimal) + "f") % (Hits / bhits) + "b" | ||||
|     elif Hits >= mhits: | ||||
|         return str("%0." + str(Decimal) + "f") % (Hits / mhits) + "m" | ||||
|     elif Hits >= khits: | ||||
|         return str("%0." + str(Decimal) + "f") % (Hits / khits) + "k" | ||||
|     elif Hits == 0: | ||||
|         return str("%d" % 0) | ||||
|     else: | ||||
|         return str("%d" % Hits) | ||||
| 
 | ||||
|         result = "%d" % hits | ||||
| 
 | ||||
|     return result | ||||
| 
 | ||||
| 
 | ||||
| def fPerc(lVal=0, rVal=0, Decimal=2): | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Scot W. Stevenson
						Scot W. Stevenson