IP Library › Granted Patent US 7,237,064
Granted Patent B2
US 7,237,064 · App. 10/684,012 · Granted Jun 26, 2007

Method and apparatus for feedback-based management of combined heap and compiled code caches

Assignee: Intel Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,237,064
App. No.
10/684,012
Granted
Jun 26, 2007
Kind
B2
Abstract

Disclosed are a method, apparatus and system for managing a shared heap and compiled code cache in a managed runtime environment. Based on feedback generated during runtime, a runtime storage manager dynamically allocates storage space, from a shared storage region, between a compiled code cache and a heap. For at least one embodiment, the size of the shared storage region may be increased if a growth need is identified for both the compiled code cache and the heap during a single iteration of runtime storage manager processing.

Claims (102)

1. A method comprising:

making a first determination, based on first feedback generated during execution of a program, the first determination to indicate whether a size of a compiled code cache should be modified;

making a second determination, based on second feedback generated during execution of the program, the second determination to indicate whether a size of a heap should be modified; and

modifying a shared storage region based on the first determination and the second determination;

wherein modifying the shared storage region based on the first and second determinations further comprises if the second determination indicates that the size of the heap should be increased, modifying allocation of the shared storage region to increase the size of the heap, and to decrease the size of the compiled code cache.

2. The method of claim 1 , wherein modifying the shared storage region based on the first determination and the second determination further comprises:

increasing the size of the shared storage region if:

the first determination indicates that the size of the compiled code cache should be increased; and

the second determination indicates that the size of the heap should be increased.

3. The method of claim 1 , wherein modifying the shared storage region based on the first determination and the second determination further comprises:

decreasing the size of the shared storage region if:

the first determination indicates that the size of the compiled code cache should be decreased; and

the second determination indicates that the size of the heap should be decreased.

4. The method of claim 1 , wherein modifying the shared storage region based on the first and second determinations further comprises:

modifying allocation of the shared storage region to increase the size of the heap if:

the second determination indicates that the size of the heap should be increased; and

a growth need for the heap has existed for at least a predetermined time interval.

5. The method of claim 1 , wherein modifying the shared storage region based on the first and second determinations further comprises:

if the first determination indicates that the size of the compiled code cache should be increased, modifying allocation of the shared storage region to increase the size of the compiled code cache.

6. The method of claim 5 , wherein modifying the shared storage region based on the first and second determinations further comprises:

if the first determination indicates that the size of the compiled code cache should be increased, modifying allocation of the shared storage region to decrease the size of the heap.

7. The method of claim 1 , wherein modifying the shared storage region based on the first and second determinations further comprises:

if the second determination indicates that the size of the heap should be decreased, modifying allocation of the shared storage region to decrease the size of the heap.

8. The method of claim 7 , wherein modifying the shared storage region based on the first and second determinations further comprises:

if the second determination indicates that the size of the heap should be decreased, modifying allocation of the shared storage region to increase the size of the compiled code cache.

9. The method of claim 1 , wherein modifying the shared storage region based on the first and second determinations further comprises:

modifying allocation of the shared storage region to increase the size of the compiled code cache if:

the first determination indicates that the size of the compiled code cache should be increased; and

a growth need for the compiled code cache has existed for at least a predetermined time interval.

10. The method of claim 1 , wherein modifying the shared storage region based on the first and second determinations further comprises:

if the first determination indicates that the size of the compiled code cache should be decreased, modifying allocation of the shared storage region to decrease the size of the compiled code cache.

11. The method of claim 10 , wherein modifying the shared storage region based on the first and second determinations further comprises:

if the first determination indicates that the size of the compiled code cache should be decreased, modifying allocation of the shared storage region to increase the size of the heap.

12. The method of claim 1 , wherein:

the first feedback includes a code increase indicator to indicate whether the amount of compiled code in the compiled code cache has increased during execution of the program.

13. The method of claim 1 , wherein:

the first feedback includes an eviction rate indicator to indicate a rate at which code has been evicted from the compiled code cache during execution of the program.

14. The method of claim 1 , wherein:

the first feedback includes a compilation rate indicator to indicate a rate at which code has been compiled by a just-in-time compiler during execution of the program.

15. The method of claim 1 , wherein:

the second feedback includes a garbage collection rate indicator to indicate a rate at which unneeded information has been discarded from the heap during execution of the program.

16. The method of claim 1 , wherein:

the second feedback includes an object increase indicator to indicate whether live code remaining in the heap after garbage collection has increased during execution of the program.

17. An article comprising:

a machine-readable storage medium having a plurality of machine accessible instructions, which if executed by a machine, cause the machine to perform operations comprising:

making a first determination, based on first feedback generated during execution of a program, the first determination to indicate whether a size of a compiled code cache should be modified;

making a second determination, based on second feedback generated during execution of the program, the second determination to indicate whether a size of a heap should be modified; and

modifying a shared storage region based on the first determination and the second determination;

wherein the instructions that cause the machine to modify a shared storage region based on the first determination and the second determination further comprise instructions that cause the machine to modify allocation of the shared storage region to increase the size of the heap and to decrease the size of the compiled code cache if the second determination indicates that the size of the heap should be increased.

18. The article of claim 17 , wherein the instructions that cause the machine to modify a shared storage region based on the first determination and the second determination further comprise instructions that cause the machine to:

increase the size of the shared storage region if:

the first determination indicates that the size of the compiled code cache should be increased; and

the second determination indicates that the size of the heap should be increased.

19. The article of claim 17 , wherein the instructions that cause the machine to modify a shared storage region based on the first determination and the second determination further comprise instructions that cause the machine to:

decrease the size of the shared storage region if:

the first determination indicates that the size of the compiled code cache should be decreased; and

the second determination indicates that the size of the heap should be decreased.

20. The article of claim 17 , wherein the instructions that cause the machine to modify a shared storage region based on the first determination and the second determination further comprise instructions that cause the machine to:

modify allocation of the shared storage region to increase the size of the heap if:

the second determination indicates that the size of the heap should be increased; and

a growth need for the heap has existed for at least a predetermined time interval.

21. The article of claim 17 , wherein the instructions that cause the machine to modify a shared storage region based on the first determination and the second determination further comprise instructions that cause the machine to:

modify, if the first determination indicates that the size of the compiled code cache should be increased, allocation of the shared storage region to increase the size of the compiled code cache.

22. The article of claim 21 , wherein the instructions that cause the machine to modify a shared storage region based on the first determination and the second determination further comprise instructions that cause the machine to:

modify, if the first determination indicates that the size of the compiled code cache should be increased, allocation of the shared storage region to decrease the size of the heap.

23. The article of claim 17 , wherein the instructions that cause the machine to modify a shared storage region based on the first determination and the second determination further comprise instructions that cause the machine to:

modify, if the second determination indicates that the size of the heap should be decreased, allocation of the shared storage region to decrease the size of the heap.

24. The article of claim 23 , wherein the instructions that cause the machine to modify a shared storage region based on the first determination and the second determination further comprise instructions that cause the machine to:

modify, if the second determination indicates that the size of the heap should be decreased, allocation of the shared storage region to increase the size of the compiled code cache.

25. The article of claim 17 , wherein the instructions that cause the machine to modify a shared storage region based on the first determination and the second determination further comprise instructions that cause the machine to:

modify allocation of the shared storage region to increase the size of the compiled code cache if:

the first determination indicates that the size of the compiled code cache should be increased; and

a growth need for the compiled code cache has existed for at least a predetermined time interval.

26. The article of claim 17 , wherein the instructions that cause the machine to modify a shared storage region based on the first determination and the second determination further comprise instructions that cause the machine to:

modify allocation of the shared storage region to decrease the size of the compiled code cache if the first determination indicates that the size of the compiled code cache should be decreased.

27. The article of claim 26 , wherein the instructions that cause the machine to modify a shared storage region based on the first determination and the second determination further comprise instructions that cause the machine to:

modify allocation of the shared storage region to increase the size of the heap if the first determination indicates that the size of the compiled code cache should be decreased.

28. The article of claim 17 , wherein:

the first feedback includes a code increase indicator to indicate whether the amount of compiled code in the compiled code cache has increased during execution of the program.

29. The article of claim 17 , wherein:

the first feedback includes an eviction rate indicator to indicate a rate at which code has been evicted from the compiled code cache during execution of the program.

30. The article of claim 17 , wherein:

the first feedback includes a compilation rate indicator to indicate a rate at which code has been compiled by a just-in-time compiler during execution of the program.

31. The article of claim 17 , wherein:

the second feedback includes a garbage collection rate indicator to indicate a rate at which unneeded information has been discarded from the heap during execution of the program.

32. The article of claim 17 , wherein:

the second feedback includes an object increase indicator to indicate whether live code remaining in the heap after garbage collection has increased during execution of the program.

33. A method comprising:

making a first determination, based on first feedback generated during execution of a program, the first determination to indicate whether a size of a compiled code cache, which is a memory area to store native code instructions, should be modified;

making a second determination, based on second feedback generated during execution of the program, the second determination to indicate whether a size of a heap, which is a memory area, separate from the compiled code cache, to store data created at runtime but that is not to store code, should be modified; and

based on the first determination and the second determination, modifying a shared storage region, which is to store both the compiled code cache and the heap;

wherein said modifying further comprises moving a boundary between the compiled code cache and the heap while maintaining the current size of the shared storage area, and to decrease the size of the heap.

34. The method of claim 33 , wherein:

said modifying further comprises moving the boundary between the compiled code cache and the heap in order to increase the size of the heap.

35. The method of claim 33 , wherein:

said modifying further comprises increasing the size of the shared storage region.

36. The method of claim 33 , wherein:

said modifying further comprises reducing the size of the shared storage region.

37. The method of claim 33 , wherein:

said first feedback includes information regarding usage of the compiled code cache during execution.

38. The method of claim 33 , wherein:

said first feedback includes information regarding usage of the heap during execution.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2004
From: LEWIS, BRIAN T.
To: INTEL CORPORATION
Reel/Frame 015066/0287 →
Continuity (1)
Related Publication 20050102657A1 · May 12, 2005