If you want the same policy applied to each VC then applying at the physical interface would be best (depending on the scenario and how many sub-interfaces you have). In the long run applying the service-policy to the sub-interface will pay for itself.