Bagikan melalui


Memantau solusi Batch dengan menghitung tugas dan simpul berdasarkan status

Untuk memantau dan mengelola solusi Azure Batch skala besar, Anda mungkin perlu menentukan hitungan sumber daya di berbagai status. Azure Batch memberikan operasi yang efisien untuk mendapatkan hitungan tugas Batch dan simpul komputasi. Anda dapat menggunakan operasi ini alih-alih kueri daftar yang berpotensi memakan waktu yang mengembalikan informasi terperinci tentang koleksi besar tugas atau simpul.

  • Get Task Counts mendapatkan hitungan agregat tugas aktif, berjalan, dan selesai dalam pekerjaan, dan tugas yang berhasil atau gagal. Dengan menghitung tugas di setiap status, Anda dapat dengan lebih mudah menampilkan kemajuan pekerjaan kepada pengguna atau mendeteksi penundaan atau kegagalan tak terduga yang dapat memengaruhi pekerjaan.

  • List Pool Node Counts mendapatkan jumlah Node komputasi spot khusus di setiap kumpulan yang berada di berbagai status: creating, idle, offline, preempted, rebooting, reimaging, starting, dan lain-lain. Dengan menghitung simpul di setiap status, Anda dapat menentukan kapan Anda memiliki sumber daya komputasi yang memadai untuk menjalankan pekerjaan dan mengidentifikasi potensi masalah dengan kumpulan Anda.

Perhatikan bahwa kadang-kadang, angka yang dikembalikan oleh operasi ini mungkin tidak mutakhir. Jika Anda perlu memastikan bahwa penghitungannya akurat, gunakan kueri daftar untuk menghitung sumber daya ini. Kueri daftar juga memungkinkan Anda mendapatkan informasi tentang sumber daya Batch lainnya seperti aplikasi. Untuk informasi selengkapnya tentang menerapkan filter ke kueri daftar, lihat Membuat kueri untuk mencantumkan sumber daya Batch secara efisien.

Hitungan status tugas

Operasi Get Task Counts menghitung tugas dengan status berikut:

  • Aktif - Tugas yang diantrekan dan dapat dijalankan, tetapi saat ini tidak ditetapkan ke simpul komputasi. Tugas juga active jika tergantung pada tugas induk yang belum selesai.
  • Berjalan - Tugas yang telah ditetapkan ke simpul komputasi, tetapi belum selesai. Tugas dihitung sebagai running saat statusnya sedang preparing atau running, seperti yang ditunjukkan oleh operasi Dapatkan informasi tentang tugas.
  • Selesai - Tugas yang tidak lagi memenuhi syarat untuk dijalankan karena berhasil diselesaikan atau tidak berhasil diselesaikan dan juga kehabisan batas percobaan kembali.
  • Berhasil - Tugas yang hasil eksekusi tugasnya success. Batch menentukan apakah tugas telah berhasil atau gagal dengan memeriksa properti TaskExecutionResult dari properti executionInfo.
  • Gagal - Tugas yang hasil eksekusi tugasnya failure.

Sampel kode .NET berikut menunjukkan cara mengambil hitungan tugas menurut status.

var taskCounts = await batchClient.JobOperations.GetJobTaskCountsAsync("job-1");

Console.WriteLine("Task count in active state: {0}", taskCounts.Active);
Console.WriteLine("Task count in preparing or running state: {0}", taskCounts.Running);
Console.WriteLine("Task count in completed state: {0}", taskCounts.Completed);
Console.WriteLine("Succeeded task count: {0}", taskCounts.Succeeded);
Console.WriteLine("Failed task count: {0}", taskCounts.Failed);

Anda dapat menggunakan pola serupa untuk REST dan bahasa lain yang didukung untuk mendapatkan hitungan tugas untuk pekerjaan.

Hitungan status simpul

Operasi List Pool Node Counts menghitung simpul komputasi dengan status berikut di setiap kumpulan. Jumlah agregat terpisah disediakan untuk node khusus dan node Spot di setiap kumpulan.

  • Membuat - VM yang dialokasikan Azure yang belum mulai bergabung dengan kumpulan.
  • Tidak berjalan - Simpul komputasi yang tersedia yang saat ini tidak menjalankan tugas.
  • Meninggalkan kumpulan - Simpul yang meninggalkan kumpulan, baik karena pengguna secara eksplisit menghapusnya atau karena kumpulan sedang mengubah ukuran atau penskalaan otomatis.
  • Offline - Simpul yang tidak dapat digunakan Batch untuk menjadwalkan tugas baru.
  • Preempted: Node Spot yang dihapus dari kumpulan karena Azure mengklaim kembali VM. Node preempted dapat diinisialisasi ulang saat kapasitas VM Spot pengganti tersedia.
  • Rebooting - Simpul yang memulai kembali.
  • Reimaging - Simpul tempat sistem operasi sedang diinstal ulang.
  • Berjalan - Simpul yang menjalankan satu atau beberapa tugas (selain tugas awal).
  • Memulai - Simpul tempat layanan Batch dimulai.
  • Gagal memulai tugas - Simpul tempat tugas awal gagal dan kehabisan semua percobaan kembali serta saat waitForSuccess diatur pada tugas awal. Simpul tidak dapat digunakan untuk menjalankan tugas.
  • Tidak diketahui - Simpul yang kehilangan kontak dengan layanan Batch dan statusnya tidak diketahui.
  • Tidak dapat digunakan - Simpul yang tidak dapat digunakan untuk eksekusi tugas karena kesalahan.
  • Menunggu memulai tugas - Simpul tempat tugas awal mulai berjalan, tetapi waitForSuccess diatur dan tugas awal belum selesai.

Cuplikan C# berikut menunjukkan cara mencantumkan hitungan simpul untuk semua kumpulan di akun saat ini:

foreach (var nodeCounts in batchClient.PoolOperations.ListPoolNodeCounts())
{
    Console.WriteLine("Pool Id: {0}", nodeCounts.PoolId);

    Console.WriteLine("Total dedicated node count: {0}", nodeCounts.Dedicated.Total);

    // Get dedicated node counts in Idle and Offline states; you can get additional states.
    Console.WriteLine("Dedicated node count in Idle state: {0}", nodeCounts.Dedicated.Idle);
    Console.WriteLine("Dedicated node count in Offline state: {0}", nodeCounts.Dedicated.Offline);

    Console.WriteLine("Total Spot node count: {0}", nodeCounts.LowPriority.Total);

    // Get Spot node counts in Running and Preempted states; you can get additional states.
    Console.WriteLine("Spot node count in Running state: {0}", nodeCounts.LowPriority.Running);
    Console.WriteLine("Spot node count in Preempted state: {0}", nodeCounts.LowPriority.Preempted);
}

Cuplikan C# berikut menunjukkan cara mencantumkan hitungan simpul untuk kumpulan tertentu di akun saat ini.

foreach (var nodeCounts in batchClient.PoolOperations.ListPoolNodeCounts(new ODATADetailLevel(filterClause: "poolId eq 'testpool'")))
{
    Console.WriteLine("Pool Id: {0}", nodeCounts.PoolId);

    Console.WriteLine("Total dedicated node count: {0}", nodeCounts.Dedicated.Total);

    // Get dedicated node counts in Idle and Offline states; you can get additional states.
    Console.WriteLine("Dedicated node count in Idle state: {0}", nodeCounts.Dedicated.Idle);
    Console.WriteLine("Dedicated node count in Offline state: {0}", nodeCounts.Dedicated.Offline);

    Console.WriteLine("Total Spot node count: {0}", nodeCounts.LowPriority.Total);

    // Get Spot node counts in Running and Preempted states; you can get additional states.
    Console.WriteLine("Spot node count in Running state: {0}", nodeCounts.LowPriority.Running);
    Console.WriteLine("Spot node count in Preempted state: {0}", nodeCounts.LowPriority.Preempted);
}

Anda dapat menggunakan pola serupa untuk REST dan bahasa lain yang didukung untuk mendapatkan hitungan simpul untuk kumpulan.

Langkah berikutnya