Changeset a35b458 in mainline for uspace/app/stats/stats.c
- Timestamp:
- 2018-03-02T20:10:49Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1380b7
- Parents:
- 3061bc1
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:38:31)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-03-02 20:10:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/stats/stats.c
r3061bc1 ra35b458 58 58 size_t count; 59 59 stats_task_t *stats_tasks = stats_get_tasks(&count); 60 60 61 61 if (stats_tasks == NULL) { 62 62 fprintf(stderr, "%s: Unable to get tasks\n", NAME); 63 63 return; 64 64 } 65 65 66 66 printf("[taskid] [thrds] [resident] [virtual] [ucycles]" 67 67 " [kcycles] [name\n"); 68 68 69 69 size_t i; 70 70 for (i = 0; i < count; i++) { … … 77 77 char usuffix; 78 78 char ksuffix; 79 79 80 80 bin_order_suffix(stats_tasks[i].resmem, &resmem, &resmem_suffix, true); 81 81 bin_order_suffix(stats_tasks[i].virtmem, &virtmem, &virtmem_suffix, true); 82 82 order_suffix(stats_tasks[i].ucycles, &ucycles, &usuffix); 83 83 order_suffix(stats_tasks[i].kcycles, &kcycles, &ksuffix); 84 84 85 85 printf("%-8" PRIu64 " %7zu %7" PRIu64 "%s %6" PRIu64 "%s" 86 86 " %8" PRIu64 "%c %8" PRIu64 "%c %s\n", … … 89 89 ucycles, usuffix, kcycles, ksuffix, stats_tasks[i].name); 90 90 } 91 91 92 92 free(stats_tasks); 93 93 } … … 97 97 size_t count; 98 98 stats_thread_t *stats_threads = stats_get_threads(&count); 99 99 100 100 if (stats_threads == NULL) { 101 101 fprintf(stderr, "%s: Unable to get threads\n", NAME); 102 102 return; 103 103 } 104 104 105 105 printf("[taskid] [threadid] [state ] [prio] [cpu ] [ucycles] [kcycles]\n"); 106 106 107 107 size_t i; 108 108 for (i = 0; i < count; i++) { … … 110 110 uint64_t ucycles, kcycles; 111 111 char usuffix, ksuffix; 112 112 113 113 order_suffix(stats_threads[i].ucycles, &ucycles, &usuffix); 114 114 order_suffix(stats_threads[i].kcycles, &kcycles, &ksuffix); 115 115 116 116 printf("%-8" PRIu64 " %-10" PRIu64 " %-8s %6d ", 117 117 stats_threads[i].task_id, stats_threads[i].thread_id, 118 118 thread_get_state(stats_threads[i].state), 119 119 stats_threads[i].priority); 120 120 121 121 if (stats_threads[i].on_cpu) 122 122 printf("%6u ", stats_threads[i].cpu); 123 123 else 124 124 printf("(none) "); 125 125 126 126 printf("%8" PRIu64"%c %8" PRIu64"%c\n", 127 127 ucycles, usuffix, kcycles, ksuffix); 128 128 } 129 129 } 130 130 131 131 free(stats_threads); 132 132 } … … 136 136 size_t count; 137 137 stats_cpu_t *cpus = stats_get_cpus(&count); 138 138 139 139 if (cpus == NULL) { 140 140 fprintf(stderr, "%s: Unable to get CPU statistics\n", NAME); 141 141 return; 142 142 } 143 143 144 144 printf("[id] [MHz ] [busy cycles] [idle cycles]\n"); 145 145 146 146 size_t i; 147 147 for (i = 0; i < count; i++) { … … 150 150 uint64_t bcycles, icycles; 151 151 char bsuffix, isuffix; 152 152 153 153 order_suffix(cpus[i].busy_cycles, &bcycles, &bsuffix); 154 154 order_suffix(cpus[i].idle_cycles, &icycles, &isuffix); 155 155 156 156 printf("%10" PRIu16 " %12" PRIu64 "%c %12" PRIu64 "%c\n", 157 157 cpus[i].frequency_mhz, bcycles, bsuffix, … … 160 160 printf("inactive\n"); 161 161 } 162 162 163 163 free(cpus); 164 164 } … … 168 168 size_t count; 169 169 load_t *load = stats_get_load(&count); 170 170 171 171 if (load == NULL) { 172 172 fprintf(stderr, "%s: Unable to get load\n", NAME); 173 173 return; 174 174 } 175 175 176 176 printf("%s: Load average: ", NAME); 177 177 178 178 size_t i; 179 179 for (i = 0; i < count; i++) { 180 180 if (i > 0) 181 181 printf(" "); 182 182 183 183 stats_print_load_fragment(load[i], 2); 184 184 } 185 185 186 186 printf("\n"); 187 187 188 188 free(load); 189 189 } … … 193 193 struct timeval uptime; 194 194 getuptime(&uptime); 195 195 196 196 printf("%s: Up %ld days, %ld hours, %ld minutes, %ld seconds\n", 197 197 NAME, uptime.tv_sec / DAY, (uptime.tv_sec % DAY) / HOUR, … … 242 242 bool toggle_load = false; 243 243 bool toggle_uptime = false; 244 244 245 245 task_id_t task_id = 0; 246 246 247 247 int i; 248 248 for (i = 1; i < argc; i++) { 249 249 int off; 250 250 251 251 /* Usage */ 252 252 if ((off = arg_parse_short_long(argv[i], "-h", "--help")) != -1) { … … 254 254 return 0; 255 255 } 256 256 257 257 /* All threads */ 258 258 if ((off = arg_parse_short_long(argv[i], "-a", "--all")) != -1) { … … 262 262 continue; 263 263 } 264 264 265 265 /* CPUs */ 266 266 if ((off = arg_parse_short_long(argv[i], "-c", "--cpus")) != -1) { … … 269 269 continue; 270 270 } 271 271 272 272 /* Threads */ 273 273 if ((off = arg_parse_short_long(argv[i], "-t", "--task=")) != -1) { … … 279 279 return -1; 280 280 } 281 281 282 282 task_id = tmp; 283 283 284 284 toggle_tasks = false; 285 285 toggle_threads = true; 286 286 continue; 287 287 } 288 288 289 289 /* Load */ 290 290 if ((off = arg_parse_short_long(argv[i], "-l", "--load")) != -1) { … … 293 293 continue; 294 294 } 295 295 296 296 /* Uptime */ 297 297 if ((off = arg_parse_short_long(argv[i], "-u", "--uptime")) != -1) { … … 301 301 } 302 302 } 303 303 304 304 if (toggle_tasks) 305 305 list_tasks(); 306 306 307 307 if (toggle_threads) 308 308 list_threads(task_id, toggle_all); 309 309 310 310 if (toggle_cpus) 311 311 list_cpus(); 312 312 313 313 if (toggle_load) 314 314 print_load(); 315 315 316 316 if (toggle_uptime) 317 317 print_uptime(); 318 318 319 319 return 0; 320 320 }
Note:
See TracChangeset
for help on using the changeset viewer.