Merge "dumpstate: refactor DumpUFS" into rvc-dev
Change-Id: I37f0a8055919d63cb668d1d848658a93947a89dd Change-Id: Ia7c4b229e2ea4d2041785fe9bb533fca5b66f28c Change-Id: Iffb799340a60ae0779354fdbf3221a7058e32cf0 Change-Id: Ia7b32408f326ef0ac586bef5aa1c267512deaaf3
This commit is contained in:
commit
0168963937
|
@ -370,37 +370,9 @@ static void DumpF2FS(int fd) {
|
|||
}
|
||||
|
||||
static void DumpUFS(int fd) {
|
||||
DumpFileToFd(fd, "UFS vendor info", "/proc/scsi/scsi");
|
||||
RunCommandToFd(fd, "UFS io_stats", {"/vendor/bin/sh", "-c",
|
||||
"path=\"/sys/devices/platform/soc/*ufshc*/io_stats\"; "
|
||||
"printf \"\\t\\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"ReadCnt ReadBytes WriteCnt WriteBytes RWCnt RWBytes; "
|
||||
"str=$(cat $path/*_start); arr=($str); "
|
||||
"printf \"Started: \\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[1]} ${arr[0]} ${arr[5]} ${arr[4]} ${arr[3]} ${arr[2]}; "
|
||||
"str=$(cat $path/*_complete); arr=($str); "
|
||||
"printf \"Completed: \\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[1]} ${arr[0]} ${arr[5]} ${arr[4]} ${arr[3]} ${arr[2]}; "
|
||||
"str=$(cat $path/*_maxdiff); arr=($str); "
|
||||
"printf \"MaxDiff: \\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\\n\" "
|
||||
"${arr[1]} ${arr[0]} ${arr[5]} ${arr[4]} ${arr[3]} ${arr[2]}; "});
|
||||
|
||||
RunCommandToFd(fd, "UFS req_stats", {"/vendor/bin/sh", "-c",
|
||||
"path=\"/sys/devices/platform/soc/*ufshc*/req_stats\"; "
|
||||
"printf \"\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"All Write Read Read\\(urg\\) Write\\(urg\\) Flush Discard; "
|
||||
"str=$(cat $path/*_min); arr=($str); "
|
||||
"printf \"Min:\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[0]} ${arr[3]} ${arr[6]} ${arr[4]} ${arr[5]} ${arr[2]} ${arr[1]}; "
|
||||
"str=$(cat $path/*_max); arr=($str); "
|
||||
"printf \"Max:\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[0]} ${arr[3]} ${arr[6]} ${arr[4]} ${arr[5]} ${arr[2]} ${arr[1]}; "
|
||||
"str=$(cat $path/*_avg); arr=($str); "
|
||||
"printf \"Avg.:\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[0]} ${arr[3]} ${arr[6]} ${arr[4]} ${arr[5]} ${arr[2]} ${arr[1]}; "
|
||||
"str=$(cat $path/*_sum); arr=($str); "
|
||||
"printf \"Count:\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\\n\" "
|
||||
"${arr[0]} ${arr[3]} ${arr[6]} ${arr[4]} ${arr[5]} ${arr[2]} ${arr[1]};"});
|
||||
DumpFileToFd(fd, "UFS model", "/sys/block/sda/device/model");
|
||||
DumpFileToFd(fd, "UFS rev", "/sys/block/sda/device/rev");
|
||||
DumpFileToFd(fd, "UFS size", "/sys/block/sda/size");
|
||||
|
||||
std::string bootdev = android::base::GetProperty(UFS_BOOTDEVICE, "");
|
||||
if (!bootdev.empty()) {
|
||||
|
@ -409,6 +381,37 @@ static void DumpUFS(int fd) {
|
|||
DumpFileToFd(fd, "UFS Slow IO Unmap", "/sys/devices/platform/soc/" + bootdev + "/slowio_unmap_cnt");
|
||||
DumpFileToFd(fd, "UFS Slow IO Sync", "/sys/devices/platform/soc/" + bootdev + "/slowio_sync_cnt");
|
||||
|
||||
RunCommandToFd(fd, "UFS io_stats", {"/vendor/bin/sh", "-c",
|
||||
"path=\"/sys/devices/platform/soc/" + bootdev + "/io_stats\"; "
|
||||
"printf \"\\t\\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"ReadCnt ReadBytes WriteCnt WriteBytes RWCnt RWBytes; "
|
||||
"str=$(cat $path/*_start); arr=($str); "
|
||||
"printf \"Started: \\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[1]} ${arr[0]} ${arr[5]} ${arr[4]} ${arr[3]} ${arr[2]}; "
|
||||
"str=$(cat $path/*_complete); arr=($str); "
|
||||
"printf \"Completed: \\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[1]} ${arr[0]} ${arr[5]} ${arr[4]} ${arr[3]} ${arr[2]}; "
|
||||
"str=$(cat $path/*_maxdiff); arr=($str); "
|
||||
"printf \"MaxDiff: \\t%-10s %-10s %-10s %-10s %-10s %-10s\\n\\n\" "
|
||||
"${arr[1]} ${arr[0]} ${arr[5]} ${arr[4]} ${arr[3]} ${arr[2]}; "});
|
||||
|
||||
RunCommandToFd(fd, "UFS req_stats", {"/vendor/bin/sh", "-c",
|
||||
"path=\"/sys/devices/platform/soc/" + bootdev + "/req_stats\"; "
|
||||
"printf \"\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"All Write Read Read\\(urg\\) Write\\(urg\\) Flush Discard; "
|
||||
"str=$(cat $path/*_min); arr=($str); "
|
||||
"printf \"Min:\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[0]} ${arr[3]} ${arr[6]} ${arr[4]} ${arr[5]} ${arr[2]} ${arr[1]}; "
|
||||
"str=$(cat $path/*_max); arr=($str); "
|
||||
"printf \"Max:\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[0]} ${arr[3]} ${arr[6]} ${arr[4]} ${arr[5]} ${arr[2]} ${arr[1]}; "
|
||||
"str=$(cat $path/*_avg); arr=($str); "
|
||||
"printf \"Avg.:\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\" "
|
||||
"${arr[0]} ${arr[3]} ${arr[6]} ${arr[4]} ${arr[5]} ${arr[2]} ${arr[1]}; "
|
||||
"str=$(cat $path/*_sum); arr=($str); "
|
||||
"printf \"Count:\\t%-10s %-10s %-10s %-10s %-10s %-10s %-10s\\n\\n\" "
|
||||
"${arr[0]} ${arr[3]} ${arr[6]} ${arr[4]} ${arr[5]} ${arr[2]} ${arr[1]};"});
|
||||
|
||||
std::string ufs_health = "for f in $(find /sys/devices/platform/soc/" + bootdev + "/health_descriptor -type f); do if [[ -r $f && -f $f ]]; then echo --- $f; cat $f; echo ''; fi; done";
|
||||
RunCommandToFd(fd, "UFS health", {"/vendor/bin/sh", "-c", ufs_health.c_str()});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue