algorithm for predicting procces's memory/cpu usage based on other other prior/still running jobs
Here are the broad outlines of one general approach:


Determine what observable attributes of a job might help you predict the resource usage of the job.  You'll have to hypothesize what these might be based on your domain knowledge of the kinds of jobs you run, as well as your knowledge of what attributes of a job can be measured and observed, before the job finishes.
Treat that set of observable attributes as the "feature vector" for the job.  Each job gets assigned a "feature vector", based on the values of those attributes.
Gather training data: gather a data set, from past jobs, where you have measured the attributes of the jobs before they finished running and also measured the actual resource usage of those jobs.
Now use some suitable machine learning algorithm to predict the resource usage of new jobs, based on the training set and the attributes of the new job.  Select some appropriate supervised learning algorithm.  The choice of a specific algorithm will depend on how you expect the resource usage to vary depending on the attributes.  (Is it a linear relationship?  Smooth curve?  Something else?)  You might choose linear regression, or CART trees, or something else entirely.  There's lots of literature on this -- I'll leave you to study it on your own and get up to speed on standard materials on this subject.


You'll have to work out the details on your own and play with it a bit to see how well it works in your particular setting.  I can't tell you whether or not this will work well in the end; that will depend on your particular workload and the types of jobs you are dealing with.