@@ -558,8 +558,12 @@ def section_arc(kstats_dict):
558558 arc_target_size = arc_stats ['c' ]
559559 arc_max = arc_stats ['c_max' ]
560560 arc_min = arc_stats ['c_min' ]
561+ anon_size = arc_stats ['anon_size' ]
561562 mfu_size = arc_stats ['mfu_size' ]
562563 mru_size = arc_stats ['mru_size' ]
564+ mfug_size = arc_stats ['mfu_ghost_size' ]
565+ mrug_size = arc_stats ['mru_ghost_size' ]
566+ unc_size = arc_stats ['uncached_size' ]
563567 meta_limit = arc_stats ['arc_meta_limit' ]
564568 meta_size = arc_stats ['arc_meta_used' ]
565569 dnode_limit = arc_stats ['arc_dnode_limit' ]
@@ -574,11 +578,17 @@ def section_arc(kstats_dict):
574578 f_perc (arc_min , arc_max ), f_bytes (arc_min ))
575579 prt_i2 ('Max size (high water):' ,
576580 target_size_ratio , f_bytes (arc_max ))
577- caches_size = int (mfu_size )+ int (mru_size )
581+ caches_size = int (anon_size )+ int (mfu_size )+ int (mru_size )+ int (unc_size )
582+ prt_i2 ('Anonymouns data size:' ,
583+ f_perc (anon_size , caches_size ), f_bytes (anon_size ))
578584 prt_i2 ('Most Frequently Used (MFU) cache size:' ,
579585 f_perc (mfu_size , caches_size ), f_bytes (mfu_size ))
580586 prt_i2 ('Most Recently Used (MRU) cache size:' ,
581587 f_perc (mru_size , caches_size ), f_bytes (mru_size ))
588+ prt_i1 ('Most Frequently Used (MFU) ghost size:' , f_bytes (mfug_size ))
589+ prt_i1 ('Most Recently Used (MRU) ghost size:' , f_bytes (mrug_size ))
590+ prt_i2 ('Uncached data size:' ,
591+ f_perc (unc_size , caches_size ), f_bytes (unc_size ))
582592 prt_i2 ('Metadata cache size (hard limit):' ,
583593 f_perc (meta_limit , arc_max ), f_bytes (meta_limit ))
584594 prt_i2 ('Metadata cache size (current):' ,
@@ -626,78 +636,119 @@ def section_archits(kstats_dict):
626636 """
627637
628638 arc_stats = isolate_section ('arcstats' , kstats_dict )
629- all_accesses = int (arc_stats ['hits' ])+ int (arc_stats ['misses' ])
630- actual_hits = int (arc_stats ['mfu_hits' ])+ int (arc_stats ['mru_hits' ])
631-
632- prt_1 ('ARC total accesses (hits + misses):' , f_hits (all_accesses ))
633- ta_todo = (('Cache hit ratio:' , arc_stats ['hits' ]),
634- ('Cache miss ratio:' , arc_stats ['misses' ]),
635- ('Actual hit ratio (MFU + MRU hits):' , actual_hits ))
639+ all_accesses = int (arc_stats ['hits' ])+ int (arc_stats ['iohits' ])+ \
640+ int (arc_stats ['misses' ])
636641
642+ prt_1 ('ARC total accesses:' , f_hits (all_accesses ))
643+ ta_todo = (('Total hits:' , arc_stats ['hits' ]),
644+ ('Total I/O hits:' , arc_stats ['iohits' ]),
645+ ('Total misses:' , arc_stats ['misses' ]))
637646 for title , value in ta_todo :
638647 prt_i2 (title , f_perc (value , all_accesses ), f_hits (value ))
648+ print ()
639649
640650 dd_total = int (arc_stats ['demand_data_hits' ]) + \
651+ int (arc_stats ['demand_data_iohits' ]) + \
641652 int (arc_stats ['demand_data_misses' ])
642- prt_i2 ('Data demand efficiency:' ,
643- f_perc (arc_stats ['demand_data_hits' ], dd_total ),
644- f_hits (dd_total ))
653+ prt_2 ('ARC demand data accesses:' , f_perc (dd_total , all_accesses ),
654+ f_hits (dd_total ))
655+ dd_todo = (('Demand data hits:' , arc_stats ['demand_data_hits' ]),
656+ ('Demand data I/O hits:' , arc_stats ['demand_data_iohits' ]),
657+ ('Demand data misses:' , arc_stats ['demand_data_misses' ]))
658+ for title , value in dd_todo :
659+ prt_i2 (title , f_perc (value , dd_total ), f_hits (value ))
660+ print ()
661+
662+ dm_total = int (arc_stats ['demand_metadata_hits' ]) + \
663+ int (arc_stats ['demand_metadata_iohits' ]) + \
664+ int (arc_stats ['demand_metadata_misses' ])
665+ prt_2 ('ARC demand metadata accesses:' , f_perc (dm_total , all_accesses ),
666+ f_hits (dm_total ))
667+ dm_todo = (('Demand metadata hits:' , arc_stats ['demand_metadata_hits' ]),
668+ ('Demand metadata I/O hits:' ,
669+ arc_stats ['demand_metadata_iohits' ]),
670+ ('Demand metadata misses:' , arc_stats ['demand_metadata_misses' ]))
671+ for title , value in dm_todo :
672+ prt_i2 (title , f_perc (value , dm_total ), f_hits (value ))
673+ print ()
645674
646- dp_total = int (arc_stats ['prefetch_data_hits' ]) + \
675+ pd_total = int (arc_stats ['prefetch_data_hits' ]) + \
676+ int (arc_stats ['prefetch_data_iohits' ]) + \
647677 int (arc_stats ['prefetch_data_misses' ])
648- prt_i2 ('Data prefetch efficiency:' ,
649- f_perc (arc_stats ['prefetch_data_hits' ], dp_total ),
650- f_hits (dp_total ))
678+ prt_2 ('ARC prefetch metadata accesses:' , f_perc (pd_total , all_accesses ),
679+ f_hits (pd_total ))
680+ pd_todo = (('Prefetch data hits:' , arc_stats ['prefetch_data_hits' ]),
681+ ('Prefetch data I/O hits:' , arc_stats ['prefetch_data_iohits' ]),
682+ ('Prefetch data misses:' , arc_stats ['prefetch_data_misses' ]))
683+ for title , value in pd_todo :
684+ prt_i2 (title , f_perc (value , pd_total ), f_hits (value ))
685+ print ()
651686
652- known_hits = int (arc_stats ['mfu_hits' ]) + \
653- int (arc_stats ['mru_hits' ]) + \
654- int (arc_stats ['mfu_ghost_hits' ]) + \
655- int (arc_stats ['mru_ghost_hits' ])
687+ pm_total = int (arc_stats ['prefetch_metadata_hits' ]) + \
688+ int (arc_stats ['prefetch_metadata_iohits' ]) + \
689+ int (arc_stats ['prefetch_metadata_misses' ])
690+ prt_2 ('ARC prefetch metadata accesses:' , f_perc (pm_total , all_accesses ),
691+ f_hits (pm_total ))
692+ pm_todo = (('Prefetch metadata hits:' ,
693+ arc_stats ['prefetch_metadata_hits' ]),
694+ ('Prefetch metadata I/O hits:' ,
695+ arc_stats ['prefetch_metadata_iohits' ]),
696+ ('Prefetch metadata misses:' ,
697+ arc_stats ['prefetch_metadata_misses' ]))
698+ for title , value in pm_todo :
699+ prt_i2 (title , f_perc (value , pm_total ), f_hits (value ))
700+ print ()
656701
657- anon_hits = int (arc_stats ['hits' ])- known_hits
702+ all_prefetches = int (arc_stats ['predictive_prefetch' ])+ \
703+ int (arc_stats ['prescient_prefetch' ])
704+ prt_2 ('ARC predictive prefetches:' ,
705+ f_perc (arc_stats ['predictive_prefetch' ], all_prefetches ),
706+ f_hits (arc_stats ['predictive_prefetch' ]))
707+ prt_i2 ('Demand hits after predictive:' ,
708+ f_perc (arc_stats ['demand_hit_predictive_prefetch' ],
709+ arc_stats ['predictive_prefetch' ]),
710+ f_hits (arc_stats ['demand_hit_predictive_prefetch' ]))
711+ prt_i2 ('Demand I/O hits after predictive:' ,
712+ f_perc (arc_stats ['demand_iohit_predictive_prefetch' ],
713+ arc_stats ['predictive_prefetch' ]),
714+ f_hits (arc_stats ['demand_iohit_predictive_prefetch' ]))
715+ never = int (arc_stats ['predictive_prefetch' ]) - \
716+ int (arc_stats ['demand_hit_predictive_prefetch' ]) - \
717+ int (arc_stats ['demand_iohit_predictive_prefetch' ])
718+ prt_i2 ('Never demanded after predictive:' ,
719+ f_perc (never , arc_stats ['predictive_prefetch' ]),
720+ f_hits (never ))
721+ print ()
658722
723+ prt_2 ('ARC prescient prefetches:' ,
724+ f_perc (arc_stats ['prescient_prefetch' ], all_prefetches ),
725+ f_hits (arc_stats ['prescient_prefetch' ]))
726+ prt_i2 ('Demand hits after prescient:' ,
727+ f_perc (arc_stats ['demand_hit_prescient_prefetch' ],
728+ arc_stats ['prescient_prefetch' ]),
729+ f_hits (arc_stats ['demand_hit_prescient_prefetch' ]))
730+ prt_i2 ('Demand I/O hits after prescient:' ,
731+ f_perc (arc_stats ['demand_iohit_prescient_prefetch' ],
732+ arc_stats ['prescient_prefetch' ]),
733+ f_hits (arc_stats ['demand_iohit_prescient_prefetch' ]))
734+ never = int (arc_stats ['prescient_prefetch' ])- \
735+ int (arc_stats ['demand_hit_prescient_prefetch' ])- \
736+ int (arc_stats ['demand_iohit_prescient_prefetch' ])
737+ prt_i2 ('Never demanded after prescient:' ,
738+ f_perc (never , arc_stats ['prescient_prefetch' ]),
739+ f_hits (never ))
659740 print ()
660- print ('Cache hits by cache type:' )
741+
742+ print ('ARC states hits of all accesses:' )
661743 cl_todo = (('Most frequently used (MFU):' , arc_stats ['mfu_hits' ]),
662744 ('Most recently used (MRU):' , arc_stats ['mru_hits' ]),
663745 ('Most frequently used (MFU) ghost:' ,
664746 arc_stats ['mfu_ghost_hits' ]),
665747 ('Most recently used (MRU) ghost:' ,
666- arc_stats ['mru_ghost_hits' ]))
667-
748+ arc_stats ['mru_ghost_hits' ]),
749+ ( 'Uncached:' , arc_stats [ 'uncached_hits' ]))
668750 for title , value in cl_todo :
669- prt_i2 (title , f_perc (value , arc_stats ['hits' ]), f_hits (value ))
670-
671- # For some reason, anon_hits can turn negative, which is weird. Until we
672- # have figured out why this happens, we just hide the problem, following
673- # the behavior of the original arc_summary.
674- if anon_hits >= 0 :
675- prt_i2 ('Anonymously used:' ,
676- f_perc (anon_hits , arc_stats ['hits' ]), f_hits (anon_hits ))
677-
678- print ()
679- print ('Cache hits by data type:' )
680- dt_todo = (('Demand data:' , arc_stats ['demand_data_hits' ]),
681- ('Prefetch data:' , arc_stats ['prefetch_data_hits' ]),
682- ('Demand metadata:' , arc_stats ['demand_metadata_hits' ]),
683- ('Prefetch metadata:' ,
684- arc_stats ['prefetch_metadata_hits' ]))
685-
686- for title , value in dt_todo :
687- prt_i2 (title , f_perc (value , arc_stats ['hits' ]), f_hits (value ))
688-
689- print ()
690- print ('Cache misses by data type:' )
691- dm_todo = (('Demand data:' , arc_stats ['demand_data_misses' ]),
692- ('Prefetch data:' ,
693- arc_stats ['prefetch_data_misses' ]),
694- ('Demand metadata:' , arc_stats ['demand_metadata_misses' ]),
695- ('Prefetch metadata:' ,
696- arc_stats ['prefetch_metadata_misses' ]))
697-
698- for title , value in dm_todo :
699- prt_i2 (title , f_perc (value , arc_stats ['misses' ]), f_hits (value ))
700-
751+ prt_i2 (title , f_perc (value , all_accesses ), f_hits (value ))
701752 print ()
702753
703754
@@ -708,11 +759,17 @@ def section_dmu(kstats_dict):
708759
709760 zfetch_access_total = int (zfetch_stats ['hits' ])+ int (zfetch_stats ['misses' ])
710761
711- prt_1 ('DMU prefetch efficiency:' , f_hits (zfetch_access_total ))
712- prt_i2 ('Hit ratio:' , f_perc (zfetch_stats ['hits' ], zfetch_access_total ),
762+ prt_1 ('DMU predictive prefetcher calls:' , f_hits (zfetch_access_total ))
763+ prt_i2 ('Stream hits:' ,
764+ f_perc (zfetch_stats ['hits' ], zfetch_access_total ),
713765 f_hits (zfetch_stats ['hits' ]))
714- prt_i2 ('Miss ratio:' , f_perc (zfetch_stats ['misses' ], zfetch_access_total ),
766+ prt_i2 ('Stream misses:' ,
767+ f_perc (zfetch_stats ['misses' ], zfetch_access_total ),
715768 f_hits (zfetch_stats ['misses' ]))
769+ prt_i2 ('Streams limit reached:' ,
770+ f_perc (zfetch_stats ['max_streams' ], zfetch_stats ['misses' ]),
771+ f_hits (zfetch_stats ['max_streams' ]))
772+ prt_i1 ('Prefetches issued' , f_hits (zfetch_stats ['io_issued' ]))
716773 print ()
717774
718775
0 commit comments