1) How many cores does your processor have?
2) Is your application single-threaded?
3) How do you measure the processor load?
If you have multiple cores (which is very likely) and your application is single-threaded then you cannot occupy more than one core. So if you have two cores and your app uses one of them then the load will be 50% for your process and some extra for other applications. To occupy the multi-core processor fully you would have to parallelize your computations in multiple threads.
Well, that's really hard to say then without the code. The problem is most likely that you have some I/O that stalls the execution. Do you write any files and/or stdout/stderr info?
If not, then it may indeed be some RAM stalls - in case your code reads/writes a lot of data. Perhaps you could try running your program on other hardware? It might even be the power options (i.e. "power saver mode" or something like that).