1 /* 2 * Copyright (c) 2000-2016 Apple Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28 29 #pragma once 30 31 #if XNU_KERNEL_PRIVATE 32 //DRKTODO: the decompression side stats should be either made optional or 33 //per-CPU to avoid cacheline contention 34 35 typedef struct { 36 uint64_t lz4_compressions; 37 uint64_t lz4_compression_failures; 38 uint64_t lz4_compressed_bytes; 39 uint64_t lz4_wk_compression_delta; 40 uint64_t lz4_wk_compression_negative_delta; 41 uint64_t lz4_post_wk_compressions; 42 43 uint64_t wk_compressions; 44 uint64_t wk_cabstime; 45 uint64_t wk_sv_compressions; 46 uint64_t wk_mzv_compressions; 47 uint64_t wk_compression_failures; 48 uint64_t wk_compressed_bytes_total; 49 uint64_t wk_compressions_exclusive; 50 uint64_t wk_compressed_bytes_exclusive; 51 52 uint64_t wkh_compressions; 53 uint64_t wkh_cabstime; 54 uint64_t wks_compressions; 55 uint64_t wks_cabstime; 56 uint64_t wks_compressed_bytes; 57 uint64_t wks_compression_failures; 58 uint64_t wks_sv_compressions; 59 60 uint64_t lz4_decompressions; 61 uint64_t lz4_decompressed_bytes; 62 uint64_t uc_decompressions; 63 64 uint64_t wk_decompressions; 65 uint64_t wk_dabstime; 66 67 uint64_t wkh_decompressions; 68 uint64_t wkh_dabstime; 69 70 uint64_t wks_decompressions; 71 uint64_t wks_dabstime; 72 73 uint64_t wk_decompressed_bytes; 74 uint64_t wk_sv_decompressions; 75 } compressor_stats_t; 76 77 extern compressor_stats_t compressor_stats; 78 79 typedef struct { 80 uint32_t lz4_selection_max; 81 int32_t wkdm_reeval_threshold; 82 int32_t lz4_threshold; 83 uint32_t lz4_max_failure_skips; 84 uint32_t lz4_max_failure_run_length; 85 uint32_t lz4_max_preselects; 86 uint32_t lz4_run_preselection_threshold; 87 uint32_t lz4_run_continue_bytes; 88 uint32_t lz4_profitable_bytes; 89 } compressor_tuneables_t; 90 91 extern compressor_tuneables_t vmctune; 92 93 #endif /* XNU_KERNEL_PRIVATE */ 94