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

Side by Side Diff: chrome/browser/task_manager/task_manager.h

Issue 10854076: Add GPU memory tab to the task manager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Allow only one outstanding vidmem refresh Created 8 years, 4 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_H_ 5 #ifndef CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_H_
6 #define CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_H_ 6 #define CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_H_
7 7
8 #include <map> 8 #include <map>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/basictypes.h" 12 #include "base/basictypes.h"
13 #include "base/gtest_prod_util.h" 13 #include "base/gtest_prod_util.h"
14 #include "base/memory/ref_counted.h" 14 #include "base/memory/ref_counted.h"
15 #include "base/memory/singleton.h" 15 #include "base/memory/singleton.h"
16 #include "base/observer_list.h" 16 #include "base/observer_list.h"
17 #include "base/process_util.h" 17 #include "base/process_util.h"
18 #include "base/string16.h" 18 #include "base/string16.h"
19 #include "base/timer.h" 19 #include "base/timer.h"
20 #include "chrome/browser/renderer_host/web_cache_manager.h" 20 #include "chrome/browser/renderer_host/web_cache_manager.h"
21 #include "content/public/common/gpu_info.h"
21 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCache.h" 22 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCache.h"
22 23
23 class TaskManagerModel; 24 class TaskManagerModel;
24 25
25 namespace base { 26 namespace base {
26 class ProcessMetrics; 27 class ProcessMetrics;
27 } 28 }
28 29
29 namespace content { 30 namespace content {
30 class WebContents; 31 class WebContents;
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 string16 GetResourceProfileName(int index) const; 308 string16 GetResourceProfileName(int index) const;
308 string16 GetResourceNetworkUsage(int index) const; 309 string16 GetResourceNetworkUsage(int index) const;
309 string16 GetResourceCPUUsage(int index) const; 310 string16 GetResourceCPUUsage(int index) const;
310 string16 GetResourcePrivateMemory(int index) const; 311 string16 GetResourcePrivateMemory(int index) const;
311 string16 GetResourceSharedMemory(int index) const; 312 string16 GetResourceSharedMemory(int index) const;
312 string16 GetResourcePhysicalMemory(int index) const; 313 string16 GetResourcePhysicalMemory(int index) const;
313 string16 GetResourceProcessId(int index) const; 314 string16 GetResourceProcessId(int index) const;
314 string16 GetResourceWebCoreImageCacheSize(int index) const; 315 string16 GetResourceWebCoreImageCacheSize(int index) const;
315 string16 GetResourceWebCoreScriptsCacheSize(int index) const; 316 string16 GetResourceWebCoreScriptsCacheSize(int index) const;
316 string16 GetResourceWebCoreCSSCacheSize(int index) const; 317 string16 GetResourceWebCoreCSSCacheSize(int index) const;
318 string16 GetResourceVidmem(int index) const;
317 string16 GetResourceFPS(int index) const; 319 string16 GetResourceFPS(int index) const;
318 string16 GetResourceSqliteMemoryUsed(int index) const; 320 string16 GetResourceSqliteMemoryUsed(int index) const;
319 string16 GetResourceGoatsTeleported(int index) const; 321 string16 GetResourceGoatsTeleported(int index) const;
320 string16 GetResourceV8MemoryAllocatedSize(int index) const; 322 string16 GetResourceV8MemoryAllocatedSize(int index) const;
321 323
322 // Gets the private memory (in bytes) that should be displayed for the passed 324 // Gets the private memory (in bytes) that should be displayed for the passed
323 // resource index. Caches the result since this calculation can take time on 325 // resource index. Caches the result since this calculation can take time on
324 // some platforms. 326 // some platforms.
325 bool GetPrivateMemory(int index, size_t* result) const; 327 bool GetPrivateMemory(int index, size_t* result) const;
326 328
327 // Gets the shared memory (in bytes) that should be displayed for the passed 329 // Gets the shared memory (in bytes) that should be displayed for the passed
328 // resource index. Caches the result since this calculation can take time on 330 // resource index. Caches the result since this calculation can take time on
329 // some platforms. 331 // some platforms.
330 bool GetSharedMemory(int index, size_t* result) const; 332 bool GetSharedMemory(int index, size_t* result) const;
331 333
332 // Gets the physical memory (in bytes) that should be displayed for the passed 334 // Gets the physical memory (in bytes) that should be displayed for the passed
333 // resource index. 335 // resource index.
334 bool GetPhysicalMemory(int index, size_t* result) const; 336 bool GetPhysicalMemory(int index, size_t* result) const;
335 337
336 // Gets the statuses of webkit. Return false if the resource for the given row 338 // Gets the statuses of webkit. Return false if the resource for the given row
337 // isn't a renderer. 339 // isn't a renderer.
338 bool GetWebCoreCacheStats(int index, 340 bool GetWebCoreCacheStats(int index,
339 WebKit::WebCache::ResourceTypeStats* result) const; 341 WebKit::WebCache::ResourceTypeStats* result) const;
340 342
343 // Gets the GPU memory allocated of the given page.
344 bool GetVidmem(int index, size_t* vidmem, bool* has_duplicates) const;
345
341 // Gets the fps of the given page. Return false if the resource for the given 346 // Gets the fps of the given page. Return false if the resource for the given
342 // row isn't a renderer. 347 // row isn't a renderer.
343 bool GetFPS(int index, float* result) const; 348 bool GetFPS(int index, float* result) const;
344 349
345 // Gets the sqlite memory (in byte). Return false if the resource for the 350 // Gets the sqlite memory (in byte). Return false if the resource for the
346 // given row doesn't report information. 351 // given row doesn't report information.
347 bool GetSqliteMemoryUsedBytes(int index, size_t* result) const; 352 bool GetSqliteMemoryUsedBytes(int index, size_t* result) const;
348 353
349 // Gets the amount of memory allocated for javascript. Returns false if the 354 // Gets the amount of memory allocated for javascript. Returns false if the
350 // resource for the given row isn't a renderer. 355 // resource for the given row isn't a renderer.
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 void ModelChanged(); 437 void ModelChanged();
433 438
434 void NotifyResourceTypeStats( 439 void NotifyResourceTypeStats(
435 base::ProcessId renderer_id, 440 base::ProcessId renderer_id,
436 const WebKit::WebCache::ResourceTypeStats& stats); 441 const WebKit::WebCache::ResourceTypeStats& stats);
437 442
438 void NotifyFPS(base::ProcessId renderer_id, 443 void NotifyFPS(base::ProcessId renderer_id,
439 int routing_id, 444 int routing_id,
440 float fps); 445 float fps);
441 446
447 void NotifyVidmem(const content::GPUVidmem& vidmem);
448
442 void NotifyV8HeapStats(base::ProcessId renderer_id, 449 void NotifyV8HeapStats(base::ProcessId renderer_id,
443 size_t v8_memory_allocated, 450 size_t v8_memory_allocated,
444 size_t v8_memory_used); 451 size_t v8_memory_used);
445 452
446 void NotifyBytesRead(const net::URLRequest& request, int bytes_read); 453 void NotifyBytesRead(const net::URLRequest& request, int bytes_read);
447 454
448 private: 455 private:
449 friend class base::RefCountedThreadSafe<TaskManagerModel>; 456 friend class base::RefCountedThreadSafe<TaskManagerModel>;
450 FRIEND_TEST_ALL_PREFIXES(TaskManagerTest, RefreshCalled); 457 FRIEND_TEST_ALL_PREFIXES(TaskManagerTest, RefreshCalled);
451 FRIEND_TEST_ALL_PREFIXES(ExtensionApiTest, ProcessesVsTaskManager); 458 FRIEND_TEST_ALL_PREFIXES(ExtensionApiTest, ProcessesVsTaskManager);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 typedef std::map<base::ProcessHandle, base::ProcessMetrics*> MetricsMap; 494 typedef std::map<base::ProcessHandle, base::ProcessMetrics*> MetricsMap;
488 typedef std::map<base::ProcessHandle, double> CPUUsageMap; 495 typedef std::map<base::ProcessHandle, double> CPUUsageMap;
489 typedef std::map<TaskManager::Resource*, int64> ResourceValueMap; 496 typedef std::map<TaskManager::Resource*, int64> ResourceValueMap;
490 // Private memory in bytes, shared memory in bytes. 497 // Private memory in bytes, shared memory in bytes.
491 typedef std::pair<size_t, size_t> MemoryUsageEntry; 498 typedef std::pair<size_t, size_t> MemoryUsageEntry;
492 typedef std::map<base::ProcessHandle, MemoryUsageEntry> MemoryUsageMap; 499 typedef std::map<base::ProcessHandle, MemoryUsageEntry> MemoryUsageMap;
493 500
494 // Updates the values for all rows. 501 // Updates the values for all rows.
495 void Refresh(); 502 void Refresh();
496 503
504 void RefreshVidmem();
505
497 void AddItem(TaskManager::Resource* resource, bool notify_table); 506 void AddItem(TaskManager::Resource* resource, bool notify_table);
498 void RemoveItem(TaskManager::Resource* resource); 507 void RemoveItem(TaskManager::Resource* resource);
499 508
500 // Returns the network usage (in bytes per seconds) for the specified 509 // Returns the network usage (in bytes per seconds) for the specified
501 // resource. That's the value retrieved at the last timer's tick. 510 // resource. That's the value retrieved at the last timer's tick.
502 int64 GetNetworkUsageForResource(TaskManager::Resource* resource) const; 511 int64 GetNetworkUsageForResource(TaskManager::Resource* resource) const;
503 512
504 // Called on the UI thread when some bytes are read. 513 // Called on the UI thread when some bytes are read.
505 void BytesRead(BytesReadParam param); 514 void BytesRead(BytesReadParam param);
506 515
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 ResourceValueMap current_byte_count_map_; 560 ResourceValueMap current_byte_count_map_;
552 561
553 // A map that contains the network usage is displayed in the table, in bytes 562 // A map that contains the network usage is displayed in the table, in bytes
554 // per second. It is computed every time the timer ticks. The Resources are 563 // per second. It is computed every time the timer ticks. The Resources are
555 // owned by the ResourceProviders. 564 // owned by the ResourceProviders.
556 ResourceValueMap displayed_network_usage_map_; 565 ResourceValueMap displayed_network_usage_map_;
557 566
558 // A map that contains the CPU usage (in %) for a process since last refresh. 567 // A map that contains the CPU usage (in %) for a process since last refresh.
559 CPUUsageMap cpu_usage_map_; 568 CPUUsageMap cpu_usage_map_;
560 569
570 // A map that contains the video memory usage for a process
571 content::GPUVidmem vidmem_;
572 bool pending_vidmem_update_;
573
561 // A map that contains the private/shared memory usage of the process. We 574 // A map that contains the private/shared memory usage of the process. We
562 // cache this because the same APIs are called on linux and windows, and 575 // cache this because the same APIs are called on linux and windows, and
563 // because the linux call takes >10ms to complete. This cache is cleared on 576 // because the linux call takes >10ms to complete. This cache is cleared on
564 // every Refresh(). 577 // every Refresh().
565 mutable MemoryUsageMap memory_usage_map_; 578 mutable MemoryUsageMap memory_usage_map_;
566 579
567 ObserverList<TaskManagerModelObserver> observer_list_; 580 ObserverList<TaskManagerModelObserver> observer_list_;
568 581
569 // How many calls to StartUpdating have been made without matching calls to 582 // How many calls to StartUpdating have been made without matching calls to
570 // StopUpdating. 583 // StopUpdating.
571 int update_requests_; 584 int update_requests_;
572 585
573 // How many calls to StartListening have been made without matching calls to 586 // How many calls to StartListening have been made without matching calls to
574 // StopListening. 587 // StopListening.
575 int listen_requests_; 588 int listen_requests_;
576 589
577 // Whether we are currently in the process of updating. 590 // Whether we are currently in the process of updating.
578 UpdateState update_state_; 591 UpdateState update_state_;
579 592
580 // A salt lick for the goats. 593 // A salt lick for the goats.
581 uint64 goat_salt_; 594 uint64 goat_salt_;
582 595
583 // Resource identifier that is unique within single session. 596 // Resource identifier that is unique within single session.
584 int last_unique_id_; 597 int last_unique_id_;
585 598
586 DISALLOW_COPY_AND_ASSIGN(TaskManagerModel); 599 DISALLOW_COPY_AND_ASSIGN(TaskManagerModel);
587 }; 600 };
588 601
589 #endif // CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_H_ 602 #endif // CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698