Load balancing has been a key concern for distributed systems. In this paper, our distributed system consists of heterogeneous resources with multiple selfish consumers that receive computationally intensive tasks from users and decide for assigning them to resources. The consumers in the system work independently, of which attempts to assign the received tasks to resources with the objective of optimizing the expected completion time of it's tasks. In order to have a balanced system there should be equilibrium between these selfish consumers. Here we formulate the problem as a non-cooperative game with the objective of minimizing mean time in the system. We show the existence of a potential function, which allows us to transform the non-cooperative game into a standard convex optimization problem. Our load balancing scheme is implemented by GridSim simulation toolkit. To verify the optimality of our scheme, we present the results compared with that of other existing schemes.