Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/heap.cc

Issue 10778009: Add histogram for total heap fragmentation, don't report fragmentation for new space, and report fr… (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: updates Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/v8-counters.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 #endif 440 #endif
441 441
442 isolate_->counters()->alive_after_last_gc()->Set( 442 isolate_->counters()->alive_after_last_gc()->Set(
443 static_cast<int>(SizeOfObjects())); 443 static_cast<int>(SizeOfObjects()));
444 444
445 isolate_->counters()->symbol_table_capacity()->Set( 445 isolate_->counters()->symbol_table_capacity()->Set(
446 symbol_table()->Capacity()); 446 symbol_table()->Capacity());
447 isolate_->counters()->number_of_symbols()->Set( 447 isolate_->counters()->number_of_symbols()->Set(
448 symbol_table()->NumberOfElements()); 448 symbol_table()->NumberOfElements());
449 449
450 #define UPDATE_COUNTERS_FOR_SPACE(space) \ 450 if (isolate()->memory_allocator()->Size() > 0) {
451 isolate_->counters()->space##_bytes_available()->Set( \ 451 isolate_->counters()->external_fragmentation_total()->AddSample(
452 static_cast<int>(space()->Available())); \ 452 static_cast<int>(100 - (SizeOfObjects() * 100.0) / CommittedMemory()));
453 isolate_->counters()->space##_bytes_committed()->Set( \
454 static_cast<int>(space()->CommittedMemory())); \
455 isolate_->counters()->space##_bytes_used()->Set( \
456 static_cast<int>(space()->SizeOfObjects())); \
457 if (space()->CommittedMemory() > 0) { \
458 isolate_->counters()->external_fragmentation_##space()->AddSample( \
459 static_cast<int>( \
460 (space()->SizeOfObjects() * 100) / space()->CommittedMemory())); \
461 } 453 }
454
455 #define UPDATE_COUNTERS_FOR_SPACE(space) \
456 isolate_->counters()->space##_bytes_available()->Set( \
457 static_cast<int>(space()->Available())); \
458 isolate_->counters()->space##_bytes_committed()->Set( \
459 static_cast<int>(space()->CommittedMemory())); \
460 isolate_->counters()->space##_bytes_used()->Set( \
461 static_cast<int>(space()->SizeOfObjects()));
462 #define UPDATE_FRAGMENTATION_FOR_SPACE(space) \
463 if (space()->CommittedMemory() > 0) { \
464 isolate_->counters()->external_fragmentation_##space()->AddSample( \
465 static_cast<int>(100 - \
466 (space()->SizeOfObjects() * 100.0) / space()->CommittedMemory())); \
467 }
468 #define UPDATE_COUNTERS_AND_FRAGMENTATION_FOR_SPACE(space) \
469 UPDATE_COUNTERS_FOR_SPACE(space) \
470 UPDATE_FRAGMENTATION_FOR_SPACE(space)
471
462 UPDATE_COUNTERS_FOR_SPACE(new_space) 472 UPDATE_COUNTERS_FOR_SPACE(new_space)
463 UPDATE_COUNTERS_FOR_SPACE(old_pointer_space) 473 UPDATE_COUNTERS_AND_FRAGMENTATION_FOR_SPACE(old_pointer_space)
464 UPDATE_COUNTERS_FOR_SPACE(old_data_space) 474 UPDATE_COUNTERS_AND_FRAGMENTATION_FOR_SPACE(old_data_space)
465 UPDATE_COUNTERS_FOR_SPACE(code_space) 475 UPDATE_COUNTERS_AND_FRAGMENTATION_FOR_SPACE(code_space)
466 UPDATE_COUNTERS_FOR_SPACE(map_space) 476 UPDATE_COUNTERS_AND_FRAGMENTATION_FOR_SPACE(map_space)
467 UPDATE_COUNTERS_FOR_SPACE(cell_space) 477 UPDATE_COUNTERS_AND_FRAGMENTATION_FOR_SPACE(cell_space)
468 UPDATE_COUNTERS_FOR_SPACE(lo_space) 478 UPDATE_COUNTERS_AND_FRAGMENTATION_FOR_SPACE(lo_space)
469 #undef UPDATE_COUNTERS_FOR_SPACE 479 #undef UPDATE_COUNTERS_FOR_SPACE
480 #undef UPDATE_FRAGMENTATION_FOR_SPACE
481 #undef UPDATE_COUNTERS_AND_FRAGMENTATION_FOR_SPACE
470 482
471 #if defined(DEBUG) 483 #if defined(DEBUG)
472 ReportStatisticsAfterGC(); 484 ReportStatisticsAfterGC();
473 #endif // DEBUG 485 #endif // DEBUG
474 #ifdef ENABLE_DEBUGGER_SUPPORT 486 #ifdef ENABLE_DEBUGGER_SUPPORT
475 isolate_->debug()->AfterGarbageCollection(); 487 isolate_->debug()->AfterGarbageCollection();
476 #endif // ENABLE_DEBUGGER_SUPPORT 488 #endif // ENABLE_DEBUGGER_SUPPORT
477 } 489 }
478 490
479 491
(...skipping 6744 matching lines...) Expand 10 before | Expand all | Expand 10 after
7224 INSTANCE_TYPE_LIST(ADJUST_LAST_TIME_OBJECT_COUNT) 7236 INSTANCE_TYPE_LIST(ADJUST_LAST_TIME_OBJECT_COUNT)
7225 #undef ADJUST_LAST_TIME_OBJECT_COUNT 7237 #undef ADJUST_LAST_TIME_OBJECT_COUNT
7226 memcpy(object_counts_last_time_, object_counts_, 7238 memcpy(object_counts_last_time_, object_counts_,
7227 sizeof(object_counts_)); 7239 sizeof(object_counts_));
7228 memcpy(object_sizes_last_time_, object_sizes_, 7240 memcpy(object_sizes_last_time_, object_sizes_,
7229 sizeof(object_sizes_)); 7241 sizeof(object_sizes_));
7230 ClearObjectStats(); 7242 ClearObjectStats();
7231 } 7243 }
7232 7244
7233 } } // namespace v8::internal 7245 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | src/v8-counters.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698