?
Solved

Is Smartheap relevant anymore?

Posted on 2010-01-12
9
Medium Priority
?
839 Views
Last Modified: 2012-05-08
Our current product uses SmartHeap memory Manager which has been in the product since 1999.
With memory being abundant and cheap / harddisks being faster and new Windows Operating systems memory management is SmartHeap really needed anymore?

The reason I am told it's still needed is to avoid excessive 'fragmentation'.

Is this still true with todays beefed up systems?

Discussion.

wc
0
Comment
Question by:williamcampbell
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
  • 2
  • +2
9 Comments
 
LVL 32

Expert Comment

by:phoffric
ID: 26298453
depends on your application whether it is still needed.

here's a quote from http://www.microquill.com/smartheapsmp/index.html
"SmartHeap has multiplied our application server throughput by a factor of six on quad processor boxes."

0
 
LVL 12

Author Comment

by:williamcampbell
ID: 26298543
The App is a Windows application that is Single Threaded. It does allocate and free lot of small blocks of memory.
0
 
LVL 40

Accepted Solution

by:
evilrix earned 1000 total points
ID: 26299245
>> It does allocate and free lot of small blocks of memory.
Well, most problems with memory fragmentation (for example) can be solved by writing code to handle memory allocation better. For example, rather than allocating many small blocks from the heap you can write a custom allocator and use in-place new. I develop huge scale data systems that have to be scalable in terms of performance and resource, we've never had a need to use such 3rd partly tools.

A good knowledge of how the standard C/C++ memory allocation systems work combined with a good knowledge of how your OS of choice manages its heap means you can write code that is scalable and efficient without spending (wasting) money on expensive 3rd party tools.

That said, if your code base has been specifically written to take advantage of SmartHeap that, to me, implies that is isn't necessarily designed to be efficient without it. This being the case, you'd have to invest some time, money and effort profiling and evaluating to ensure eradication of this tool left your application still being performant.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 32

Assisted Solution

by:phoffric
phoffric earned 1000 total points
ID: 26299467
The problem with memory fragmentation is that if you do not have enough contiguous virtual space that is mapped to physical memory, then you have to rely on disk virtual memory, which is significantly slower due to swapping memory content with disk contents. (Or, in some of my not-so-old systems, you just freeze if you don't have the contiguous physical memory - i.e., on disk-less systems - and as a result of trying to do too much, or just handling allocations poorly.) Well, you likely have significantly more virtual space than a decade ago, so I think it's a question of physical memory; unless you need well over  2GB virtual memory and only have a 32-bit platform and OS.

Are you using a 32-bit Operating System? You could upgrade to a 64-bit system. For details on Windows virtual memory see:
     http://support.microsoft.com/kb/555223
which in turn references the more expanded article:
http://members.shaw.ca/bsanders/WindowsGeneralWeb/RAMVirtualMemoryPageFileEtc.htm
(See Section 3 in this last link on 64 bit architecture/OS.)

Depending on the application(s) often adding a huge amount of extra memory greatly eliminates the need to deal with fragmentation issues, and memory managers; but it depends on how much virtual memory your system needs, and your performance requirements. Also, as a side-note, adding this physical memory can extend the life of your disk drives, again due to less swapping.
0
 
LVL 7

Expert Comment

by:js-profi
ID: 26299499
i would test with and without. if no sigificant differences drop it. if much better with smartheap you still may check whether that is only by making other apps slower.
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 26301971
What is the reason for your question ? Did you notice (performance) issues ? If so, which ones ? Do you want to save costs if possible ? Something else ?

Knowing the rationale for the auestion will allow us to give you more to-the-point answers.
0
 
LVL 12

Author Comment

by:williamcampbell
ID: 26305660
The reasons for the question:

1) If current OS memory management and memory size are optimal could Smartheap be actually slowing down the code?
2) Modern memory Profilers and Leak detectors cannot find some problems because Smartheap is masking them, although Smartheap has an API I'd rather use the new tools available.
3) When does Smartheap actually compact memory? As far as I can see it keeps allocating until you run out. With all that fragmentation shouldn't it auto compact at some stage. If it does, when? Not knowing makes me feel I'm out of control of my memory.
4) It's kind of embarrassing to admit we are using technology developed 11 years ago :)

Thanks again for the answers, helps a lot. I'll leave the question open for a bit longer then split the points.

wc



0
 
LVL 40

Expert Comment

by:evilrix
ID: 26305705
>> If current OS memory management and memory size are optimal could Smartheap be actually slowing down the code?
It is possible but the only way to be sure is to profile a before and after.
0
 
LVL 12

Author Closing Comment

by:williamcampbell
ID: 31676383
Thanks. I'll post results of testing at a later date
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Read about how to approach blogging and about ways to do it right. Stand out from the crowd and let your knowledge be consumed by a large audience. This article aims to explain how your blog should look like,  the most important things to do while b…
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use while-loops in the C programming language.
This tutorial demonstrates how to identify and create boundary or building outlines in Google Maps. In this example, I outline the boundaries of an enclosed skatepark within a community park.  Login to your Google Account, then  Google for "Google M…
Suggested Courses

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question