extern int job_submit(struct job_descriptor *job_desc, uint32_t submit_uid, char **err_msg) { int i; if (!last_reset) _get_config(); if (jobs_per_user_per_hour == 0) return SLURM_SUCCESS; _reset_counters(); for (i = 0; i < thru_put_size; i++) { if (thru_put_array[i].uid != job_desc->user_id) continue; if (thru_put_array[i].job_count < jobs_per_user_per_hour) { thru_put_array[i].job_count++; return SLURM_SUCCESS; } if (err_msg) *err_msg = xstrdup("Reached jobs per hour limit"); return ESLURM_ACCOUNTING_POLICY; } thru_put_size++; thru_put_array = xrealloc(thru_put_array, (sizeof(thru_put_t) * thru_put_size)); thru_put_array[thru_put_size - 1].uid = job_desc->user_id; thru_put_array[thru_put_size - 1].job_count = 1; return SLURM_SUCCESS; }
const device_addr_t& xport_benchmarker::benchmark_throughput_chdr( zero_copy_if::sptr tx_transport, zero_copy_if::sptr rx_transport, uint32_t sid, bool big_endian, uint32_t duration_ms) { vrt::if_packet_info_t pkt_info; _initialize_chdr(tx_transport, rx_transport, sid, pkt_info); _reset_counters(); boost::posix_time::ptime start_time(boost::posix_time::microsec_clock::local_time()); _tx_thread.reset(new boost::thread(boost::bind(&xport_benchmarker::_stream_tx, this, tx_transport.get(), &pkt_info, big_endian))); _rx_thread.reset(new boost::thread(boost::bind(&xport_benchmarker::_stream_rx, this, rx_transport.get(), &pkt_info, big_endian))); std::this_thread::sleep_for(std::chrono::milliseconds(duration_ms)); _tx_thread->interrupt(); _rx_thread->interrupt(); _tx_thread->join(); _rx_thread->join(); boost::posix_time::ptime stop_time(boost::posix_time::microsec_clock::local_time()); double duration_s = ((double)(stop_time - start_time).total_microseconds()) / 1e6; uint64_t tx_bytes = pkt_info.num_payload_words32 * sizeof(uint32_t) * _num_tx_packets; uint64_t rx_bytes = pkt_info.num_payload_words32 * sizeof(uint32_t) * _num_rx_packets; double tx_rate = (((double)tx_bytes) / duration_s); double rx_rate = (((double)rx_bytes) / duration_s); _results["TX-Bytes"] = (boost::format("%.2fMB") % (tx_bytes / (1024 * 1024))).str(); _results["RX-Bytes"] = (boost::format("%.2fMB") % (rx_bytes / (1024 * 1024))).str(); _results["TX-Throughput"] = (boost::format("%.2fMB/s") % (tx_rate / (1024 * 1024))).str(); _results["RX-Throughput"] = (boost::format("%.2fMB/s") % (rx_rate / (1024 * 1024))).str(); _results["TX-Timeouts"] = std::to_string(_num_tx_timeouts); _results["RX-Timeouts"] = std::to_string(_num_rx_timeouts); _results["Data-Errors"] = std::to_string(_num_data_errors); return _results; }