makepp_sandboxes - Online di Cloud

Ini adalah perintah makepp_sandboxes yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

PROGRAM:

NAMA


makepp_sandboxes -- Cara mempartisi build makepp

DESKRIPSI


D: --lakukan-bangun,
--jangan-bangun,
--jangan baca,
--baca-baca, I: --dalam-kotak pasir,
--di dalam-kotak pasir, O: --di luar kotak pasir, S: --bak pasir,
--sandbox-peringatkan,
--peringatan kotak pasir, V: --virtual-kotak pasir

Ada beberapa alasan mengapa Anda mungkin ingin mempartisi pohon file untuk makepp
membangun:

1. Jika Anda tahu bahwa sebagian besar pohon tidak terpengaruh oleh perubahan apa pun yang dilakukan pada
file sumber sejak build sebelumnya, maka Anda dapat memberi tahu makepp untuk menganggap file itu
di bagian-bagian pohon itu sudah mutakhir, yang berarti bahkan tidak secara implisit
memuat makefile mereka, apalagi menghitung dan memeriksa dependensinya. (Catatan
bahwa makefile yang dimuat secara eksplisit masih dimuat.)

2. Jika Anda memiliki beberapa proses makepp yang mengakses pohon yang sama, maka Anda ingin menaikkan
kesalahan jika Anda mendeteksi bahwa dua proses bersamaan menulis bagian yang sama dari
pohon, atau bahwa satu proses sedang membaca bagian dari pohon yang merupakan proses bersamaan
menulis. Bagaimanapun, Anda memiliki kondisi balapan di mana urutan kejadian relatif
dalam dua proses bersamaan (yang tidak dapat dijamin) dapat mempengaruhi hasil.

Makepp memiliki fasilitas sandboxing yang menangani kedua masalah tersebut.

Sandboxing Opsi
Opsi makepp berikut dapat digunakan untuk mengatur properti sandboxing dari subtree:
diberikan oleh path dan semua file dan file potensialnya:

--jangan-bangun path
--lakukan-bangun path
Setel atau setel ulang properti "jangan-bangun". File apa pun dengan kumpulan properti ini diasumsikan
sudah up-to-date, dan tidak ada pemeriksaan build yang akan dilakukan. Standarnya diatur ulang
(yaitu "do-build"), kecuali jika Anda memiliki "RootMakeppfile", dalam hal ini semuanya
di luar id subpohonnya "dont-build".

--bak pasir path
--dalam-kotak pasir path
--di dalam-kotak pasir path
--di luar kotak pasir path
Setel atau setel ulang properti "in-sandbox". Kesalahan muncul jika makepp sebaliknya
tulis file dengan reset properti ini. Pemeriksaan build masih dilakukan, kecuali jika
properti "dont-build" juga disetel. Standarnya diatur (yaitu "di-kotak pasir"), kecuali
ada --bak pasir opsi, dalam hal ini default untuk semua file lainnya adalah
reset (yaitu "out-of-sandbox").

--kotak pasir-peringatkan
--peringatan kotak pasir
Turunkan versi pelanggaran "dalam kotak pasir" dan "jangan baca" menjadi peringatan, bukan kesalahan.
Ini berguna ketika ada ratusan pelanggaran, sehingga Anda dapat mengumpulkan semuanya
mereka dalam sekali jalan dan mengambil tindakan korektif yang tepat. Jika tidak, Anda hanya melihat
satu pelanggaran per permintaan makepp, dan Anda tidak tahu berapa banyak yang tersisa sampai
mereka semua sudah diperbaiki.

--jangan-baca path
--do-membaca path
Setel atau setel ulang properti "jangan baca". Kesalahan muncul jika makepp sebaliknya
membaca file dengan set properti ini. Standarnya adalah reset (yaitu "do-read").

--virtual-kotak pasir
Jangan menulis ulang info build file yang tidak dibuat oleh proses makepp ini. Ini
berguna saat menjalankan proses makepp bersamaan dengan kotak pasir yang tumpang tindih, dan Anda
yakin bahwa tidak ada dua proses yang akan mencoba membangun target yang sama. Makepp akan
maka jangan menyimpan informasi tambahan tentang file yang dibacanya, karena
mungkin ada pembaca bersamaan lainnya.

Masing-masing dari 3 properti ini berlaku untuk seluruh subpohon, termasuk untuk file yang tidak
belum ada. Jalur yang lebih spesifik menimpa jalur yang kurang spesifik. Jalur yang ditentukan dapat berupa
file individual, bahkan jika file tersebut belum ada.

Jika properti disetel dan disetel ulang pada jalur yang sama persis, maka opsi yang muncul
terjauh ke kanan pada baris perintah diutamakan.

Sandboxing untuk Percepatan
Jika Anda ingin mencegah makepp membuang waktu memproses file yang Anda tahu sudah ada
up-to-date (khususnya, file yang dihasilkan oleh alat build selain makepp),
kemudian --jangan-bangun adalah pilihan untuk Anda.

Sejauh ini kasus yang paling umum untuk pengoptimalan semacam itu adalah Anda tahu bahwa semuanya tidak
pada atau di bawah direktori awal sudah diperbarui. Hal ini dapat dikomunikasikan kepada
makepp menggunakan "--jangan-bangun /. --lakukan-bangun .".

Sandboxing untuk Serentak proses
Salah satu teknik yang dapat mengurangi latensi build adalah membuat beberapa proses makepp berfungsi
pada pohon yang sama. Ini sedikit lebih sulit untuk dikelola daripada menggunakan -j pilihan,
tetapi juga bisa jauh lebih efektif karena:

· Dengan sandboxing, proses dapat berjalan di beberapa host, misalnya, melalui pekerjaan
sistem antrian. Meningkatkan -j limit akhirnya menghabiskan sumber daya CPU dari a
host tunggal, dan bahkan dapat memperlambat build karena forking proses yang berlebihan.

· -j saat ini tidak memparalelkan beberapa tugas makepp yang memakan waktu seperti memuat
makefile, pemindaian, membangun dependensi implisit saat memindai, dan memeriksa
ketergantungan.

Risiko terbesar dengan pendekatan ini adalah bahwa build dapat menjadi nondeterministik jika
proses yang mungkin bersamaan berinteraksi satu sama lain. Ini mengarah pada membangun sistem
yang menghasilkan hasil yang salah secara sporadis, dan tanpa mekanisme sederhana untuk menentukan alasannya
itu terjadi.

Untuk mengatasi risiko ini, disarankan untuk mempartisi pohon di antara proses yang bersamaan
sedemikian rupa sehingga jika ada proses yang mengakses sistem file dengan tidak benar, maka kesalahannya adalah
deterministik segera dinaikkan. Biasanya, ini dicapai dengan menugaskan ke masing-masing
proses bersamaan "kotak pasir" di mana ia diizinkan untuk menulis, di mana kotak pasir tidak
dua proses bersamaan mungkin tumpang tindih.

Selain itu, setiap proses menandai kotak pasir dari proses lain yang mungkin bersamaan
sebagai "jangan baca". Jika suatu proses membaca file, proses bersamaan lainnya bertanggung jawab
untuk menulis (dan karena itu mungkin belum ditulis), maka muncul kesalahan
segera.

Sandboxing untuk Sequential proses
Ketika build dipartisi untuk proses makepp bersamaan, biasanya ada juga
hubungan sekuensial antara berbagai pasangan proses. Misalnya, mungkin ada
selusin proses kompilasi bersamaan, diikuti oleh satu proses tautan yang tidak dapat dimulai
sampai semua proses kompilasi selesai. Hubungan berurutan seperti itu harus
ditegakkan oleh mekanisme apa pun yang mengatur berbagai proses makepp (misalnya,
sistem antrian pekerjaan).

Ketika proses memiliki hubungan sekuensial yang diketahui, biasanya tidak perlu
kesalahan ketika mereka mengakses bagian pohon yang sama, karena hasilnya tetap
deterministik.

Namun, umumnya bermanfaat untuk menentukan --jangan-bangun pilihan untuk tanggungan
proses (proses tautan dalam contoh kami) yang memberitahukannya tentang area yang sudah
telah diperbarui oleh proses prasyarat (pekerjaan kompilasi dalam contoh kita). Di dalam
cara, kami menghindari sebagian besar pekerjaan yang tidak perlu dari target pembangunan nol yang hanya
diperbarui.

Gunakan makepp_sandboxes online menggunakan layanan onworks.net



Program online Linux & Windows terbaru