164 lines
4.6 KiB
Go
164 lines
4.6 KiB
Go
// Copyright 2017 The Prometheus Authors
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
// Package xfs provides access to statistics exposed by the XFS filesystem.
|
|
package xfs
|
|
|
|
// Stats contains XFS filesystem runtime statistics, parsed from
|
|
// /proc/fs/xfs/stat.
|
|
//
|
|
// The names and meanings of each statistic were taken from
|
|
// http://xfs.org/index.php/Runtime_Stats and xfs_stats.h in the Linux
|
|
// kernel source. Most counters are uint32s (same data types used in
|
|
// xfs_stats.h), but some of the "extended precision stats" are uint64s.
|
|
type Stats struct {
|
|
// The name of the filesystem used to source these statistics.
|
|
// If empty, this indicates aggregated statistics for all XFS
|
|
// filesystems on the host.
|
|
Name string
|
|
|
|
ExtentAllocation ExtentAllocationStats
|
|
AllocationBTree BTreeStats
|
|
BlockMapping BlockMappingStats
|
|
BlockMapBTree BTreeStats
|
|
DirectoryOperation DirectoryOperationStats
|
|
Transaction TransactionStats
|
|
InodeOperation InodeOperationStats
|
|
LogOperation LogOperationStats
|
|
ReadWrite ReadWriteStats
|
|
AttributeOperation AttributeOperationStats
|
|
InodeClustering InodeClusteringStats
|
|
Vnode VnodeStats
|
|
Buffer BufferStats
|
|
ExtendedPrecision ExtendedPrecisionStats
|
|
}
|
|
|
|
// ExtentAllocationStats contains statistics regarding XFS extent allocations.
|
|
type ExtentAllocationStats struct {
|
|
ExtentsAllocated uint32
|
|
BlocksAllocated uint32
|
|
ExtentsFreed uint32
|
|
BlocksFreed uint32
|
|
}
|
|
|
|
// BTreeStats contains statistics regarding an XFS internal B-tree.
|
|
type BTreeStats struct {
|
|
Lookups uint32
|
|
Compares uint32
|
|
RecordsInserted uint32
|
|
RecordsDeleted uint32
|
|
}
|
|
|
|
// BlockMappingStats contains statistics regarding XFS block maps.
|
|
type BlockMappingStats struct {
|
|
Reads uint32
|
|
Writes uint32
|
|
Unmaps uint32
|
|
ExtentListInsertions uint32
|
|
ExtentListDeletions uint32
|
|
ExtentListLookups uint32
|
|
ExtentListCompares uint32
|
|
}
|
|
|
|
// DirectoryOperationStats contains statistics regarding XFS directory entries.
|
|
type DirectoryOperationStats struct {
|
|
Lookups uint32
|
|
Creates uint32
|
|
Removes uint32
|
|
Getdents uint32
|
|
}
|
|
|
|
// TransactionStats contains statistics regarding XFS metadata transactions.
|
|
type TransactionStats struct {
|
|
Sync uint32
|
|
Async uint32
|
|
Empty uint32
|
|
}
|
|
|
|
// InodeOperationStats contains statistics regarding XFS inode operations.
|
|
type InodeOperationStats struct {
|
|
Attempts uint32
|
|
Found uint32
|
|
Recycle uint32
|
|
Missed uint32
|
|
Duplicate uint32
|
|
Reclaims uint32
|
|
AttributeChange uint32
|
|
}
|
|
|
|
// LogOperationStats contains statistics regarding the XFS log buffer.
|
|
type LogOperationStats struct {
|
|
Writes uint32
|
|
Blocks uint32
|
|
NoInternalBuffers uint32
|
|
Force uint32
|
|
ForceSleep uint32
|
|
}
|
|
|
|
// ReadWriteStats contains statistics regarding the number of read and write
|
|
// system calls for XFS filesystems.
|
|
type ReadWriteStats struct {
|
|
Read uint32
|
|
Write uint32
|
|
}
|
|
|
|
// AttributeOperationStats contains statistics regarding manipulation of
|
|
// XFS extended file attributes.
|
|
type AttributeOperationStats struct {
|
|
Get uint32
|
|
Set uint32
|
|
Remove uint32
|
|
List uint32
|
|
}
|
|
|
|
// InodeClusteringStats contains statistics regarding XFS inode clustering
|
|
// operations.
|
|
type InodeClusteringStats struct {
|
|
Iflush uint32
|
|
Flush uint32
|
|
FlushInode uint32
|
|
}
|
|
|
|
// VnodeStats contains statistics regarding XFS vnode operations.
|
|
type VnodeStats struct {
|
|
Active uint32
|
|
Allocate uint32
|
|
Get uint32
|
|
Hold uint32
|
|
Release uint32
|
|
Reclaim uint32
|
|
Remove uint32
|
|
Free uint32
|
|
}
|
|
|
|
// BufferStats contains statistics regarding XFS read/write I/O buffers.
|
|
type BufferStats struct {
|
|
Get uint32
|
|
Create uint32
|
|
GetLocked uint32
|
|
GetLockedWaited uint32
|
|
BusyLocked uint32
|
|
MissLocked uint32
|
|
PageRetries uint32
|
|
PageFound uint32
|
|
GetRead uint32
|
|
}
|
|
|
|
// ExtendedPrecisionStats contains high precision counters used to track the
|
|
// total number of bytes read, written, or flushed, during XFS operations.
|
|
type ExtendedPrecisionStats struct {
|
|
FlushBytes uint64
|
|
WriteBytes uint64
|
|
ReadBytes uint64
|
|
}
|