A data packet transmission method, comprising: determining, by a terminal, a transmission resource utilization threshold, wherein the transmission resource utilization threshold indicates maximum transmission resource utilization for transmitting a to-be-transmitted data packet by using a transmission resource in a resource pool in a preset time period, and the transmission resource utilization threshold is determined by resource utilization of the transmission resource in the resource pool; selecting, by the terminal, a target transmission resource in a first time period from the resource pool based on the transmission resource utilization threshold, wherein a transmission resource utilization of the transmission resource in the resource pool used by the terminal in a second time period is less than or equal to the transmission resource utilization threshold, wherein the second time period comprises the first time period, and a time length of the first time period is greater than that of a transmission period of the to-be-transmitted data packet; and sending, by the terminal, the to-be-transmitted data packet on the target transmission resource; wherein the to-be-transmitted data packet is a data packet of a semi-persistent transmission, SPT, service, wherein the SPT service to which the to-be-transmitted data packet belongs comprises a plurality of SPT services having different priorities; and the sending, by the terminal, the to-be-transmitted data packet on the target transmission resource comprises: sending, by the terminal, data packets of at least some of the plurality of SPT services in descending order of priorities of the plurality of SPT services on the target transmission resource. determining, by a terminal, a transmission resource utilization threshold, wherein the transmission resource utilization threshold indicates maximum transmission resource utilization for transmitting a to-be-transmitted data packet by using a transmission resource in a resource pool in a preset time period, and the transmission resource utilization threshold is determined by resource utilization of the transmission resource in the resource pool; selecting, by the terminal, a target transmission resource in a first time period from the resource pool based on the transmission resource utilization threshold, wherein a transmission resource utilization of the transmission resource in the resource pool used by the terminal in a second time period is less than or equal to the transmission resource utilization threshold, wherein the second time period comprises the first time period, and a time length of the first time period is greater than that of a transmission period of the to-be-transmitted data packet; and sending, by the terminal, the to-be-transmitted data packet on the target transmission resource; wherein the to-be-transmitted data packet is a data packet of a semi-persistent transmission, SPT, service, wherein the SPT service to which the to-be-transmitted data packet belongs comprises a plurality of SPT services having different priorities; and the sending, by the terminal, the to-be-transmitted data packet on the target transmission resource comprises: sending, by the terminal, data packets of at least some of the plurality of SPT services in descending order of priorities of the plurality of SPT services on the target transmission resource.