The problem of scheduling real-time periodic tasks has been studied extensively since its first introduction by Liu and Layland in their classic paper [14]. Due to several merits of the fixed-priority scheduling scheme, a lot of research work has focused on the analysis of fixed-priority scheduling algorithms. For the case that the deadlines of the executions of all the tasks coincide with the ends of their corresponding periods, Liu and Layland derived a worst-case utilization bound for a task set to be schedulable by the rate-monotonic (RM) algorithm. Burchard et al. [2] presented another schedulability condition for RM, which has a higher utilization bound under a certain task condition. Although their closed-form utilization bounds provide a convenient way for resting the schedulability of a task set under the RM algorithm, the schedulability test using their bounds is too pessimistic since a lot of task sets with total utilizations larger than their bounds (and less than or equal to 1) are still schedulable by RM. For general periodic task sets in which the deadlines of the executions of the tasks may be earlier than the ends of their corresponding periods, Joseph and Pandya [8] and Lehoczky et al. [9] derived a necessary and sufficient condition for feasibly scheduling a task set using any fixed-priority scheduling algorithm. However; the schedulability rest using their necessary and sufficient condition takes pseudo-polynomial time. In this paper; we propose a polynomial-time schedulability test and prove that it is better than Liu and Layland's and Burchard's utilization bounds in the sense that as long as the total utilization of a task set is less than or equal to their bounds, our schedulability test will always answer positively for the schedulability of the task set under RM and even if a feasible task set has a total utilization larger than their bounds, our schedulability rest will still answer positively with a high probability. We also show how to generalize our polynomial-time schedulability test to handle general task sets scheduled by arbitrary fired-priority scheduling algorithms.